Transport Fever 3 · Unofficial integration

Your railway.
Your co-pilot.

Let an MCP assistant inspect your world, save a checkpoint and help run your transport company.

54 REGISTERED TOOLSBRIDGE REVISION 3GAMEPLAY API 2LOCAL DEVELOPMENT BUILD
MCP clientYour assistant
Node serverLocal userdata files
TF3 bridgeYour loaded world

The game mod and Node server work together. An installed mod alone does not connect your assistant. This is a local working build; public distribution is being prepared.

01 / CONNECTION

Get connected in five steps.

  1. Prepare the companion. Install a current Node.js LTS release and an MCP client supporting local stdio servers. Open a terminal in the companion project folder and run npm ci.
  2. Install the game mod. Run npm run install:mod for a first installation. For an existing installation, run npm run upgrade:mod; it creates a backup before replacing the mod.
  3. Enable it in your world. In TF3, enable AI MCP Bridge while creating or loading a world. Save first, then restart TF3 after an upgrade. The widget should appear at the bottom of the game screen.
  4. Register the server. Add the configuration below to your MCP client, replacing the Node and project paths with your own. Restart the client's MCP connection after changing server code.
  5. Verify a live reply. Ask the assistant to call tf3_status, then tf3_game_snapshot. The second call must acknowledge your loaded world and report gameplayVersion: 2.
{
  "mcpServers": {
    "transport-fever-3": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/transport-fever-3-mcp/server.js"],
      "env": { "TF3_USERDATA": "/absolute/path/to/Steam/userdata/ACCOUNT/3493540/local" }
    }
  }
}

Client configuration formats vary. This is a generic stdio configuration, not a universal settings-file location. On macOS, Steam is normally under ~/Library/Application Support/Steam. TF3_USERDATA is optional when exactly one account is discovered; set it when multiple accounts exist. TF3_STEAM_ROOT and TF3_GAME_ROOT override installation paths.

Local preview requirement. The current installer also provisions Lithuania import assets from the sibling transport-fever-3-lithuania project. Keep both project folders together. A standalone bridge installer is a release gate.

This is a non-cosmetic script mod. Achievements may be affected. Keep an ordinary game save before enabling it in an existing world.

02 / FIRST ACTIONS

Start small. Check the result.

Inspect and save

Check the MCP connection and describe this world.
Pause the simulation and save a checkpoint named first_test.

Load a saved game or map

List game saves and map saves separately.
Load my chosen company save, preserving the current world first.
Then verify that the new world has loaded.

Loading requires a world with the bridge already running. It cannot operate from TF3's main menu. Loading a save without the bridge may disconnect MCP; re-enable it through TF3. Every load creates a checkpoint before requesting the transition.

Plan a first service

Inspect my depots and stations. Find compatible bus models.
Quote one vehicle without buying it.
Plan a two-stop line and preview the connecting road.
Show me the required changes before building.
CapabilityCurrent evidenceLimit
Snapshot, pause, save, company nameLive acknowledgedRequires active world
Save / map loadingLive loaded company verifiedNot available at main menu
Resource searchLive acknowledgedCatalog presence ≠ compatibility
Road / depot previewLive acknowledgedNot a collision or final-cost quote
Purchases, sales, new / edited linesVehicle quote live; purchase rejectedLine and successful buy/sell acceptance pending
Road / station / depot buildRoad segment and road depot built live; stations pendingStraight roads only; no automatic connections
Current test world: the company started at zero bank balance. TF3 allowed a road and depot to create a negative balance; a vehicle purchase was rejected. Test changes were isolated and the original company save restored. Funds and final construction costs must be checked before building.
03 / LIETUVA

A Lithuania-shaped island.

The authored map has 33 towns and 16 industries, water around the country outline, rivers and population-scaled town capacities. It compresses Lithuania into a 16.384 km square. This is a fictional island adaptation, not the real coastline.

  1. Create an empty, paused Map Editor world: Temperate · Very Large · 1:1 (64 × 64 tiles). Enable the bridge.
  2. Verify isMapEditor: true and mapImportVersion: 5 in a live snapshot.
  3. Run tf3_import_lithuania once. Poll tf3_map_import_status until complete or failed. The importer creates a backup first.
  4. On completion, use the returned unique map save. tf3_start_company_game checkpoints the finished editor map and opens it as a playable game. Verify isMapEditor: false.

Commercial and industrial cargo demands are configured. Residential cargo demand is empty under this economy. Town capacities are not the same as occupied population. Inter-town roads and transport services are left to the player. Vegetable and plank starter chains are present; broader industry balance still needs testing.

Do not repeat a failed import blindly. Inspect its recorded phase and load the pre-import backup if needed. Repair flags target specific known checkpoints; they are not general-purpose retries.

04 / TECHNICAL REFERENCE

Every tool, one place.

Generated from the server's actual MCP tool discovery. Expand a tool for its input schema. Resource IDs and entity IDs belong to the loaded world; discover them again after loading.

54 tools

tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "Lietuva"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "checkpoint"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "Lietuva" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries",
        "stationGroups",
        "roadNodes"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "Lietuva"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "checkpoint"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "checkpoint" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_terrain_heightRead

Read terrain height at a world coordinate before placing infrastructure.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "Lietuva" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries",
        "stationGroups",
        "roadNodes"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "Lietuva"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "checkpoint"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "Lietuva" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries",
        "stationGroups",
        "roadNodes"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "Lietuva"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "checkpoint"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "checkpoint" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_terrain_heightRead

Read terrain height at a world coordinate before placing infrastructure.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "checkpoint" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_terrain_heightRead

Read terrain height at a world coordinate before placing infrastructure.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_terrain_scanRead

Heights on a grid around a point (rows south to north, columns west to east). Shows land, water (below about 1.5) and steep cliffs in one call. Use before choosing depot, stop or road positions.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 40,
      "maximum": 600,
      "default": 200
    },
    "step": {
      "type": "number",
      "minimum": 10,
      "maximum": 100,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_plan_roadRead

Find a feasible road route over land between two points or free-end nodes: avoids water and steep slopes (A* over terrain heights). Returns waypoints to pass to tf3_build_road_path. Buildings are not known here: always preview the path afterwards and read its validation.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.2,
      "default": 0.08
    },
    "step": {
      "type": "number",
      "minimum": 15,
      "maximum": 100,
      "default": 25
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 600
    },
    "thin": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8,
      "default": 3
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_plan_connectRead

Plan a road between two road ends (free-end nodes or points). Unlike tf3_plan_road it leaves and arrives along each free end's direction, keeps clear of existing roads and water, and smooths the result into up to 70 waypoints. Preview the result with tf3_build_road_path; or use tf3_connect_roads to plan, preview and build in one call.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "stub": {
      "type": "number",
      "minimum": 15,
      "maximum": 120,
      "default": 35
    },
    "clearance": {
      "type": "number",
      "minimum": 5,
      "maximum": 60,
      "default": 14
    },
    "step": {
      "type": "number",
      "minimum": 10,
      "maximum": 60,
      "default": 20
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.3,
      "default": 0.15
    },
    "spacing": {
      "type": "number",
      "minimum": 20,
      "maximum": 120,
      "default": 30
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 250
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_connect_roadsAction

Join two road ends in one call: plans with tf3_plan_connect, previews each candidate with the game validator, tries several stub/clearance/step settings and builds the first accepted one when build=true. Returns the attempt log, so a failure shows what blocked each try. Default template country_old_small (two lanes). After building it rebuilds the join edge at each end with the existing road's template through the game's own segment replacement, which removes the red no-entry sign (set fixJoins=false to skip). Returns joins[] with what was replaced. Junctions are still refused: both ends must be free ends (canConnect=true).

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240,
      "default": "::/infrastructure/street/country/country_old_small.street_template"
    },
    "build": {
      "type": "boolean",
      "default": false
    },
    "allowWarnings": {
      "type": "boolean",
      "default": false
    },
    "fixJoins": {
      "type": "boolean",
      "default": true
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.3,
      "default": 0.15
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 250
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_depot_nearAction

DEPRECATED, its depots cannot serve lines (use tf3_place_depot). Build a road depot at the first valid site near x,y: the game validator tries rings of positions and four rotations, so it skips buildings, cliffs and water. Returns the depot and its connection node (free end) to join with tf3_build_road_path. Costs about 500k.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 0,
      "maximum": 300,
      "default": 160
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "default": "Depot"
    },
    "resource": {
      "type": "string",
      "maxLength": 240
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_line_dumpRead

Read-only: every stop setting of a line (cargo config, waiting times, filters). Use to compare a line made in the game UI with one made through the bridge.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_path_checkRead

Check whether two road nodes are on the same connected road network (topological: lane direction and turn bans are not tested). Use it before creating a line to confirm a join worked; tf3_line_status gives the game's own path verdict for a line.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "integer",
      "minimum": 0
    },
    "to": {
      "$ref": "#/properties/from"
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buildings_nearRead

Read-only: town buildings (houses, shops, workplaces) near a point, with their footprint box. Roads cannot pass through them; stops need them within about 120 m.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 10,
      "maximum": 1000,
      "default": 150
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_suggest_stopsRead

Read-only: where to put bus stops. Lists road points (at least 12 m from junctions) ranked by the number of town buildings within catchment metres, spaced at least separation metres apart, with the road network they are on and whether your depots and stops are on that network. Give a town entity or x,y. Place stops at the top points with tf3_place_stop, on a network with networkMyDepots>0.

{
  "type": "object",
  "properties": {
    "town": {
      "type": "integer",
      "minimum": 0
    },
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 50,
      "maximum": 3000,
      "default": 400
    },
    "catchment": {
      "type": "number",
      "minimum": 30,
      "maximum": 400,
      "default": 120
    },
    "separation": {
      "type": "number",
      "minimum": 20,
      "maximum": 2000,
      "default": 120
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "default": 10
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_node_edgesRead

Read-only: the road edges that meet at a node, with street template and lane count. Use it to see which template a town street uses before joining it.

{
  "type": "object",
  "properties": {
    "node": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "node"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_replace_segmentAction

Rebuild one road edge with the game's own segment replacement (the Replace Road tool), optionally with another street template. Fixes a red no-entry sign at a join: replace the new edge touching the joined node with the template of the existing road there. tf3_connect_roads does this automatically after a build.

{
  "type": "object",
  "properties": {
    "edge": {
      "type": "integer",
      "minimum": 0
    },
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "edge"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_network_summaryRead

Read-only survey: every connected road network with edge count, bounding box, towns inside, industries attached, street templates and your stops/depots on it. Run it first: two places on one network need only stops, a depot and a line, no new road.

{
  "type": "object",
  "properties": {
    "minEdges": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "default": 3
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "default": 40
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_industry_statusRead

Read-only: industries with type, input and output cargo, output/shipped/delivered per year, road connection node and road network. Omit entity for all.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_line_statusRead

Read-only line diagnostics with the Line Manager figures: per line balance over the last game year, passengers transported per year, utilisation; per stop the town buildings in catchment and passengers waiting; per vehicle state, position, passengers and stop index; the game's path problems. Omit line for all your lines. Check it two game months after opening a line: catchables 0 or utilisation 0 means move the stops.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo",
        "stops"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          },
          "cargo": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 40
            },
            "maxItems": 20,
            "default": [
              "PASSENGERS"
            ],
            "description": "Cargo type names this stop loads: PASSENGERS for buses, a cargo name such as COAL for trucks, or [\"ALL\"]"
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          },
          "cargo": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 40
            },
            "maxItems": 20,
            "default": [
              "PASSENGERS"
            ],
            "description": "Cargo type names this stop loads: PASSENGERS for buses, a cargo name such as COAL for trucks, or [\"ALL\"]"
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_loansRead

List the bank loans the game currently offers and the loans the company holds, with amounts, terms and interest.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_take_loanAction

Take one bank loan offered by the native finance system (max 4 held). maxAmount rejects a larger offer. Acknowledgement is not proof: read tf3_loans or the snapshot balance afterwards.

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "Small",
        "Medium",
        "Large",
        "ExtraLarge"
      ]
    },
    "maxAmount": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "type",
    "maxAmount"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_repay_loanAction

Repay one held loan in full if the balance covers it. Confirm with tf3_loans afterwards.

{
  "type": "object",
  "properties": {
    "loan": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "loan"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview or build one road between two points (5-500 m). Points are an existing node {node} or {x,y[,z]} (z defaults to ground). Only free ends (nodes joining fewer than 2 roads) can be connected: junctions are refused because they crash this game build. At a free end the road continues in the stub direction, which is what stations and depots need. snap (m) attaches a point to the nearest free end within that distance. Rejections return the game reason and cost.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "snap": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "default": 0
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_road_pathAction

Preview or build a smooth multi-segment road through 2-80 points in one atomic proposal (each segment 5-500 m). Use waypoints to curve around towns, rivers and slopes. Same point and free-end rules as tf3_build_road. Optional stops (EXPERIMENTAL, the game accepts them but creates no stop on build 40425) place street bus/truck stops on the new segments (segment is 1-based, param 0.1-0.9 along it; models from tf3_resources kind=stops); a stop on your own road is connected by construction. Returns the new road nodes with their free ends.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "points": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "minimum": -32768,
            "maximum": 32768
          },
          "y": {
            "$ref": "#/properties/points/items/properties/x"
          },
          "z": {
            "type": "number",
            "minimum": -500,
            "maximum": 5000
          },
          "node": {
            "type": "integer",
            "minimum": 0
          },
          "tx": {
            "type": "number",
            "minimum": -1,
            "maximum": 1,
            "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
          },
          "ty": {
            "type": "number",
            "minimum": -1,
            "maximum": 1
          }
        },
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 80
    },
    "snap": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "default": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "segment": {
            "type": "integer",
            "minimum": 1
          },
          "param": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 0.9,
            "default": 0.5
          },
          "left": {
            "type": "boolean",
            "default": false
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "segment",
          "model"
        ],
        "additionalProperties": false
      },
      "maxItems": 8,
      "default": []
    },
    "stopIdMode": {
      "type": "string",
      "enum": [
        "index",
        "shared",
        "none"
      ]
    },
    "build": {
      "type": "boolean",
      "default": false
    },
    "allowWarnings": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "points"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_road_network_nearRead

List road nodes within a radius of a point, nearest first: position, how many roads join there, whether it is a free end you may connect to (canConnect) and its outward direction. Use before every road build.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 10,
      "maximum": 2000,
      "default": 300
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 80,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_overviewRead

One-call state for planning: year, balance, loan, your station groups (with station indices and positions), depots, lines, vehicles, and every town and industry with position and type. Prefer this over many list calls.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_place_stopAction

Place a street stop (bus/truck stop) ON an existing road at x,y using the game's own stop tool, operated through computer use. The point must lie on a road you or the town built, at least 10 m from a junction or road end. Slow (about 1-3 minutes); the call waits for the operator. Returns the new stationGroup to use in lines, or a reason it could not be placed.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "cargo": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "x",
    "y",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_place_depotAction

Place a road depot with the game's own depot tool, operated through computer use. Scripted depots (tf3_build_depot_near, tf3_build_construction) are NOT connected to the road for vehicle routing: vehicles bought there cannot be assigned to lines. Pick open flat ground right beside a road you built (the depot entrance must touch the road side). Slow (1-3 minutes); the call waits for the operator. Returns the new depot entity, or a reason.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "default": "Depot"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_cameraRead

Move the player camera to a map position so humans watching can see the work. Does not change the world.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "distance": {
      "type": "number",
      "minimum": 20,
      "maximum": 3000,
      "default": 250
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_stationAction

EXPERIMENTAL, not working on TF3 build 40425: the game accepts the request but creates no station. Preview or build a road station that works with lines: a modular street terminal with platforms and an entrance (passenger by default, cargo=true for trucks). Place it on open ground beside a town or next to an industry, then call tf3_road_network_near at its position to find its road stubs and connect them. Use this instead of small street stops, which this bridge cannot place.

{
  "type": "object",
  "properties": {
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/position/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "cargo": {
      "type": "boolean",
      "default": false
    },
    "platforms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2,
      "default": 1
    },
    "nameStyle": {
      "type": "string",
      "enum": [
        "full",
        "plain",
        "short"
      ]
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/position/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_rulesRead

How the game works for an AI player: what a working service needs, money and loans, vehicle years, the proven road-building recipe, this bridge’s limits (no junctions) and efficient play. Read once at the start.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "Lietuva" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries",
        "stationGroups",
        "roadNodes"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "Lietuva"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "checkpoint"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "Lietuva" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries",
        "stationGroups",
        "roadNodes"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "Lietuva"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "checkpoint"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "checkpoint" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_terrain_heightRead

Read terrain height at a world coordinate before placing infrastructure.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "Lietuva" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries",
        "stationGroups",
        "roadNodes"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "Lietuva"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "checkpoint"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "Lietuva" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries",
        "stationGroups",
        "roadNodes"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}
tf3_statusRead

Inspect installed game, running process and companion mod. Does not prove bridge activation.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_launchAction

Launch installed Transport Fever 3 through Steam. No purchase or save loading.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_savesRead

List local save files by modification time.

{
  "type": "object",
  "properties": {
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_backup_saveAction

Copy a named save and its sidecars into a new unique local backup directory.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_modsRead

List manually installed local game mods; does not prove activation in a save.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_snapshotRead

Read live player finances, simulation speed and time. Requires active AI MCP Bridge in a loaded world.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_start_company_gameAction

Save the completed loaded Lithuania editor map to a unique checkpoint and load it as a playable game. Preserves previous saves. A transition receipt is not proof of gameplay; poll tf3_game_snapshot until isMapEditor is false. Requires gameplayVersion 1.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_company_nameAction

Name the local player company in a playable game. Does not create extra players, change money or affect other companies.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_import_lithuaniaAction

Import Lithuania island terrain, 33 population-scaled towns and 16 industries into an empty 64x64-tile Map Editor world. Creates a backup first and a unique map save. Poll tf3_map_import_status. Requires mapImportVersion 5 and its native widget. repairExistingTowns resumes the verified island checkpoint with 33 towns and zero industries. repairCargoNeeds fills missing commercial/industrial demands on the completed island with 16 industries.

{
  "type": "object",
  "properties": {
    "repairExistingTowns": {
      "type": "boolean",
      "default": false
    },
    "repairCargoNeeds": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_map_import_statusRead

Read the queued or running map import job, failure, or verified completion. Does not start or retry imports.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_mapAction

Save the loaded Map Editor world to a uniquely named map in the Load Map namespace.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "Lietuva"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_list_entitiesRead

List lines, vehicles, stations, depots, towns or industries from the loaded world. Includes entity IDs for management.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "lines",
        "vehicles",
        "stations",
        "depots",
        "towns",
        "industries"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 50
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_set_speedAction

Set live simulation multiplier. 0 pauses; 1 resumes normal speed. Returns game command acknowledgement and observed speed.

{
  "type": "object",
  "properties": {
    "speed": {
      "type": "number",
      "enum": [
        0,
        1,
        2,
        4
      ]
    }
  },
  "required": [
    "speed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_rename_entityAction

Rename a player-owned line, vehicle, station or depot.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "entity",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_assign_vehicleAction

Assign a player-owned vehicle to a player-owned existing line. stopIndex is zero-based.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "line": {
      "$ref": "#/properties/vehicle"
    },
    "stopIndex": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "vehicle",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_stop_vehicleAction

Stop or resume a player-owned vehicle.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    },
    "stopped": {
      "type": "boolean"
    }
  },
  "required": [
    "vehicle",
    "stopped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_send_vehicle_to_depotAction

Send a player-owned vehicle to its depot without selling it.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_save_gameAction

Create a uniquely named MCP save of the loaded world. No overwrite or save deletion.

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,32}$",
      "default": "checkpoint"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "checkpoint" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_terrain_heightRead

Read terrain height at a world coordinate before placing infrastructure.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview geometry or construct a single straight surface road, 5–500 m. Existing endpoint node IDs allow connections. Does not split existing edges or build bridges/tunnels. Preview is a geometry/base-price estimate, not an engine collision or total-cost quote.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "checkpoint" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_terrain_heightRead

Read terrain height at a world coordinate before placing infrastructure.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_terrain_scanRead

Heights on a grid around a point (rows south to north, columns west to east). Shows land, water (below about 1.5) and steep cliffs in one call. Use before choosing depot, stop or road positions.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 40,
      "maximum": 600,
      "default": 200
    },
    "step": {
      "type": "number",
      "minimum": 10,
      "maximum": 100,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_plan_roadRead

Find a feasible road route over land between two points or free-end nodes: avoids water and steep slopes (A* over terrain heights). Returns waypoints to pass to tf3_build_road_path. Buildings are not known here: always preview the path afterwards and read its validation.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.2,
      "default": 0.08
    },
    "step": {
      "type": "number",
      "minimum": 15,
      "maximum": 100,
      "default": 25
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 600
    },
    "thin": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8,
      "default": 3
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_plan_connectRead

Plan a road between two road ends (free-end nodes or points). Unlike tf3_plan_road it leaves and arrives along each free end's direction, keeps clear of existing roads and water, and smooths the result into up to 70 waypoints. Preview the result with tf3_build_road_path; or use tf3_connect_roads to plan, preview and build in one call.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "stub": {
      "type": "number",
      "minimum": 15,
      "maximum": 120,
      "default": 35
    },
    "clearance": {
      "type": "number",
      "minimum": 5,
      "maximum": 60,
      "default": 14
    },
    "step": {
      "type": "number",
      "minimum": 10,
      "maximum": 60,
      "default": 20
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.3,
      "default": 0.15
    },
    "spacing": {
      "type": "number",
      "minimum": 20,
      "maximum": 120,
      "default": 30
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 250
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_connect_roadsAction

Join two road ends in one call: plans with tf3_plan_connect, previews each candidate with the game validator, tries several stub/clearance/step settings and builds the first accepted one when build=true. Returns the attempt log, so a failure shows what blocked each try. Default template country_old_small (two lanes). After building it rebuilds the join edge at each end with the existing road's template through the game's own segment replacement, which removes the red no-entry sign (set fixJoins=false to skip). Returns joins[] with what was replaced. Junctions are still refused: both ends must be free ends (canConnect=true).

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240,
      "default": "::/infrastructure/street/country/country_old_small.street_template"
    },
    "build": {
      "type": "boolean",
      "default": false
    },
    "allowWarnings": {
      "type": "boolean",
      "default": false
    },
    "fixJoins": {
      "type": "boolean",
      "default": true
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.3,
      "default": 0.15
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 250
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_depot_nearAction

DEPRECATED, its depots cannot serve lines (use tf3_place_depot). Build a road depot at the first valid site near x,y: the game validator tries rings of positions and four rotations, so it skips buildings, cliffs and water. Returns the depot and its connection node (free end) to join with tf3_build_road_path. Costs about 500k.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 0,
      "maximum": 300,
      "default": 160
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "default": "Depot"
    },
    "resource": {
      "type": "string",
      "maxLength": 240
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_line_dumpRead

Read-only: every stop setting of a line (cargo config, waiting times, filters). Use to compare a line made in the game UI with one made through the bridge.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_path_checkRead

Check whether two road nodes are on the same connected road network (topological: lane direction and turn bans are not tested). Use it before creating a line to confirm a join worked; tf3_line_status gives the game's own path verdict for a line.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "integer",
      "minimum": 0
    },
    "to": {
      "$ref": "#/properties/from"
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buildings_nearRead

Read-only: town buildings (houses, shops, workplaces) near a point, with their footprint box. Roads cannot pass through them; stops need them within about 120 m.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 10,
      "maximum": 1000,
      "default": 150
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_suggest_stopsRead

Read-only: where to put bus stops. Lists road points (at least 12 m from junctions) ranked by the number of town buildings within catchment metres, spaced at least separation metres apart, with the road network they are on and whether your depots and stops are on that network. Give a town entity or x,y. Place stops at the top points with tf3_place_stop, on a network with networkMyDepots>0.

{
  "type": "object",
  "properties": {
    "town": {
      "type": "integer",
      "minimum": 0
    },
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 50,
      "maximum": 3000,
      "default": 400
    },
    "catchment": {
      "type": "number",
      "minimum": 30,
      "maximum": 400,
      "default": 120
    },
    "separation": {
      "type": "number",
      "minimum": 20,
      "maximum": 2000,
      "default": 120
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "default": 10
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_node_edgesRead

Read-only: the road edges that meet at a node, with street template and lane count. Use it to see which template a town street uses before joining it.

{
  "type": "object",
  "properties": {
    "node": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "node"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_replace_segmentAction

Rebuild one road edge with the game's own segment replacement (the Replace Road tool), optionally with another street template. Fixes a red no-entry sign at a join: replace the new edge touching the joined node with the template of the existing road there. tf3_connect_roads does this automatically after a build.

{
  "type": "object",
  "properties": {
    "edge": {
      "type": "integer",
      "minimum": 0
    },
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "edge"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_network_summaryRead

Read-only survey: every connected road network with edge count, bounding box, towns inside, industries attached, street templates and your stops/depots on it. Run it first: two places on one network need only stops, a depot and a line, no new road.

{
  "type": "object",
  "properties": {
    "minEdges": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "default": 3
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "default": 40
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_industry_statusRead

Read-only: industries with type, input and output cargo, output/shipped/delivered per year, road connection node and road network. Omit entity for all.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_line_statusRead

Read-only line diagnostics with the Line Manager figures: per line balance over the last game year, passengers transported per year, utilisation; per stop the town buildings in catchment and passengers waiting; per vehicle state, position, passengers and stop index; the game's path problems. Omit line for all your lines. Check it two game months after opening a line: catchables 0 or utilisation 0 means move the stops.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo",
        "stops"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          },
          "cargo": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 40
            },
            "maxItems": 20,
            "default": [
              "PASSENGERS"
            ],
            "description": "Cargo type names this stop loads: PASSENGERS for buses, a cargo name such as COAL for trucks, or [\"ALL\"]"
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          },
          "cargo": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 40
            },
            "maxItems": 20,
            "default": [
              "PASSENGERS"
            ],
            "description": "Cargo type names this stop loads: PASSENGERS for buses, a cargo name such as COAL for trucks, or [\"ALL\"]"
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_loansRead

List the bank loans the game currently offers and the loans the company holds, with amounts, terms and interest.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_take_loanAction

Take one bank loan offered by the native finance system (max 4 held). maxAmount rejects a larger offer. Acknowledgement is not proof: read tf3_loans or the snapshot balance afterwards.

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "Small",
        "Medium",
        "Large",
        "ExtraLarge"
      ]
    },
    "maxAmount": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "type",
    "maxAmount"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_repay_loanAction

Repay one held loan in full if the balance covers it. Confirm with tf3_loans afterwards.

{
  "type": "object",
  "properties": {
    "loan": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "loan"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview or build one road between two points (5-500 m). Points are an existing node {node} or {x,y[,z]} (z defaults to ground). Only free ends (nodes joining fewer than 2 roads) can be connected: junctions are refused because they crash this game build. At a free end the road continues in the stub direction, which is what stations and depots need. snap (m) attaches a point to the nearest free end within that distance. Rejections return the game reason and cost.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "snap": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "default": 0
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_road_pathAction

Preview or build a smooth multi-segment road through 2-80 points in one atomic proposal (each segment 5-500 m). Use waypoints to curve around towns, rivers and slopes. Same point and free-end rules as tf3_build_road. Optional stops (EXPERIMENTAL, the game accepts them but creates no stop on build 40425) place street bus/truck stops on the new segments (segment is 1-based, param 0.1-0.9 along it; models from tf3_resources kind=stops); a stop on your own road is connected by construction. Returns the new road nodes with their free ends.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "points": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "minimum": -32768,
            "maximum": 32768
          },
          "y": {
            "$ref": "#/properties/points/items/properties/x"
          },
          "z": {
            "type": "number",
            "minimum": -500,
            "maximum": 5000
          },
          "node": {
            "type": "integer",
            "minimum": 0
          },
          "tx": {
            "type": "number",
            "minimum": -1,
            "maximum": 1,
            "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
          },
          "ty": {
            "type": "number",
            "minimum": -1,
            "maximum": 1
          }
        },
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 80
    },
    "snap": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "default": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "segment": {
            "type": "integer",
            "minimum": 1
          },
          "param": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 0.9,
            "default": 0.5
          },
          "left": {
            "type": "boolean",
            "default": false
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "segment",
          "model"
        ],
        "additionalProperties": false
      },
      "maxItems": 8,
      "default": []
    },
    "stopIdMode": {
      "type": "string",
      "enum": [
        "index",
        "shared",
        "none"
      ]
    },
    "build": {
      "type": "boolean",
      "default": false
    },
    "allowWarnings": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "points"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_road_network_nearRead

List road nodes within a radius of a point, nearest first: position, how many roads join there, whether it is a free end you may connect to (canConnect) and its outward direction. Use before every road build.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 10,
      "maximum": 2000,
      "default": 300
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 80,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_overviewRead

One-call state for planning: year, balance, loan, your station groups (with station indices and positions), depots, lines, vehicles, and every town and industry with position and type. Prefer this over many list calls.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_place_stopAction

Place a street stop (bus/truck stop) ON an existing road at x,y using the game's own stop tool, operated through computer use. The point must lie on a road you or the town built, at least 10 m from a junction or road end. Slow (about 1-3 minutes); the call waits for the operator. Returns the new stationGroup to use in lines, or a reason it could not be placed.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "cargo": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "x",
    "y",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_place_depotAction

Place a road depot with the game's own depot tool, operated through computer use. Scripted depots (tf3_build_depot_near, tf3_build_construction) are NOT connected to the road for vehicle routing: vehicles bought there cannot be assigned to lines. Pick open flat ground right beside a road you built (the depot entrance must touch the road side). Slow (1-3 minutes); the call waits for the operator. Returns the new depot entity, or a reason.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "default": "Depot"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_cameraRead

Move the player camera to a map position so humans watching can see the work. Does not change the world.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "distance": {
      "type": "number",
      "minimum": 20,
      "maximum": 3000,
      "default": 250
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_stationAction

EXPERIMENTAL, not working on TF3 build 40425: the game accepts the request but creates no station. Preview or build a road station that works with lines: a modular street terminal with platforms and an entrance (passenger by default, cargo=true for trucks). Place it on open ground beside a town or next to an industry, then call tf3_road_network_near at its position to find its road stubs and connect them. Use this instead of small street stops, which this bridge cannot place.

{
  "type": "object",
  "properties": {
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/position/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "cargo": {
      "type": "boolean",
      "default": false
    },
    "platforms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2,
      "default": 1
    },
    "nameStyle": {
      "type": "string",
      "enum": [
        "full",
        "plain",
        "short"
      ]
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/position/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_rulesRead

How the game works for an AI player: what a working service needs, money and loans, vehicle years, the proven road-building recipe, this bridge’s limits (no junctions) and efficient play. Read once at the start.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
quot;, "default": "checkpoint" } }, "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }
tf3_terrain_heightRead

Read terrain height at a world coordinate before placing infrastructure.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_terrain_scanRead

Heights on a grid around a point (rows south to north, columns west to east). Shows land, water (below about 1.5) and steep cliffs in one call. Use before choosing depot, stop or road positions.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 40,
      "maximum": 600,
      "default": 200
    },
    "step": {
      "type": "number",
      "minimum": 10,
      "maximum": 100,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_plan_roadRead

Find a feasible road route over land between two points or free-end nodes: avoids water and steep slopes (A* over terrain heights). Returns waypoints to pass to tf3_build_road_path. Buildings are not known here: always preview the path afterwards and read its validation.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.2,
      "default": 0.08
    },
    "step": {
      "type": "number",
      "minimum": 15,
      "maximum": 100,
      "default": 25
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 600
    },
    "thin": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8,
      "default": 3
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_plan_connectRead

Plan a road between two road ends (free-end nodes or points). Unlike tf3_plan_road it leaves and arrives along each free end's direction, keeps clear of existing roads and water, and smooths the result into up to 70 waypoints. Preview the result with tf3_build_road_path; or use tf3_connect_roads to plan, preview and build in one call.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "stub": {
      "type": "number",
      "minimum": 15,
      "maximum": 120,
      "default": 35
    },
    "clearance": {
      "type": "number",
      "minimum": 5,
      "maximum": 60,
      "default": 14
    },
    "step": {
      "type": "number",
      "minimum": 10,
      "maximum": 60,
      "default": 20
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.3,
      "default": 0.15
    },
    "spacing": {
      "type": "number",
      "minimum": 20,
      "maximum": 120,
      "default": 30
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 250
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_connect_roadsAction

Join two road ends in one call: plans with tf3_plan_connect, previews each candidate with the game validator, tries several stub/clearance/step settings and builds the first accepted one when build=true. Returns the attempt log, so a failure shows what blocked each try. Default template country_old_small (two lanes). After building it rebuilds the join edge at each end with the existing road's template through the game's own segment replacement, which removes the red no-entry sign (set fixJoins=false to skip). Returns joins[] with what was replaced. Junctions are still refused: both ends must be free ends (canConnect=true).

{
  "type": "object",
  "properties": {
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240,
      "default": "::/infrastructure/street/country/country_old_small.street_template"
    },
    "build": {
      "type": "boolean",
      "default": false
    },
    "allowWarnings": {
      "type": "boolean",
      "default": false
    },
    "fixJoins": {
      "type": "boolean",
      "default": true
    },
    "maxAttempts": {
      "type": "integer",
      "minimum": 1,
      "maximum": 8,
      "default": 4
    },
    "maxGrade": {
      "type": "number",
      "minimum": 0.02,
      "maximum": 0.3,
      "default": 0.15
    },
    "margin": {
      "type": "number",
      "minimum": 100,
      "maximum": 1500,
      "default": 250
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_depot_nearAction

DEPRECATED, its depots cannot serve lines (use tf3_place_depot). Build a road depot at the first valid site near x,y: the game validator tries rings of positions and four rotations, so it skips buildings, cliffs and water. Returns the depot and its connection node (free end) to join with tf3_build_road_path. Costs about 500k.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 0,
      "maximum": 300,
      "default": 160
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "default": "Depot"
    },
    "resource": {
      "type": "string",
      "maxLength": 240
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_line_dumpRead

Read-only: every stop setting of a line (cargo config, waiting times, filters). Use to compare a line made in the game UI with one made through the bridge.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_path_checkRead

Check whether two road nodes are on the same connected road network (topological: lane direction and turn bans are not tested). Use it before creating a line to confirm a join worked; tf3_line_status gives the game's own path verdict for a line.

{
  "type": "object",
  "properties": {
    "from": {
      "type": "integer",
      "minimum": 0
    },
    "to": {
      "$ref": "#/properties/from"
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buildings_nearRead

Read-only: town buildings (houses, shops, workplaces) near a point, with their footprint box. Roads cannot pass through them; stops need them within about 120 m.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 10,
      "maximum": 1000,
      "default": 150
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_suggest_stopsRead

Read-only: where to put bus stops. Lists road points (at least 12 m from junctions) ranked by the number of town buildings within catchment metres, spaced at least separation metres apart, with the road network they are on and whether your depots and stops are on that network. Give a town entity or x,y. Place stops at the top points with tf3_place_stop, on a network with networkMyDepots>0.

{
  "type": "object",
  "properties": {
    "town": {
      "type": "integer",
      "minimum": 0
    },
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 50,
      "maximum": 3000,
      "default": 400
    },
    "catchment": {
      "type": "number",
      "minimum": 30,
      "maximum": 400,
      "default": 120
    },
    "separation": {
      "type": "number",
      "minimum": 20,
      "maximum": 2000,
      "default": 120
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "default": 10
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_node_edgesRead

Read-only: the road edges that meet at a node, with street template and lane count. Use it to see which template a town street uses before joining it.

{
  "type": "object",
  "properties": {
    "node": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "node"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_replace_segmentAction

Rebuild one road edge with the game's own segment replacement (the Replace Road tool), optionally with another street template. Fixes a red no-entry sign at a join: replace the new edge touching the joined node with the template of the existing road there. tf3_connect_roads does this automatically after a build.

{
  "type": "object",
  "properties": {
    "edge": {
      "type": "integer",
      "minimum": 0
    },
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "edge"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_network_summaryRead

Read-only survey: every connected road network with edge count, bounding box, towns inside, industries attached, street templates and your stops/depots on it. Run it first: two places on one network need only stops, a depot and a line, no new road.

{
  "type": "object",
  "properties": {
    "minEdges": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "default": 3
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "default": 40
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_industry_statusRead

Read-only: industries with type, input and output cargo, output/shipped/delivered per year, road connection node and road network. Omit entity for all.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_call_logRead

Read-only: the persistent log of bridge calls (all clients). Per action: count, failure rate, top errors, slowest calls; and runs of repeated failures on the same piece of work (work item = action family + target ids). After 10 failed calls on one work item stop and change approach; at 20 the bridge refuses that work item unless override=true.

{
  "type": "object",
  "properties": {
    "sinceHours": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 720,
      "default": 6
    },
    "action": {
      "type": "string",
      "maxLength": 60
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_line_statusRead

Read-only line diagnostics with the Line Manager figures: per line balance over the last game year, passengers transported per year, utilisation; per stop the town buildings in catchment and passengers waiting; per vehicle state, position, passengers and stop index; the game's path problems. Omit line for all your lines. Check it two game months after opening a line: catchables 0 or utilisation 0 means move the stops.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_load_saveAction

Checkpoint the loaded world, then request loading an exact listed game or map save. Requires an active world bridge; cannot operate from the main menu. Poll snapshot after transition.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "namespace": {
      "type": "string",
      "enum": [
        "game",
        "map"
      ],
      "default": "game"
    },
    "asEditor": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_resourcesRead

Search loaded resource names and IDs for vehicles, streets, cargo or constructions. Availability and compatibility still require native validation.

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "vehicles",
        "streets",
        "constructions",
        "cargo",
        "stops"
      ]
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "default": ""
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_entity_detailsRead

Read bounded fields needed to manage station groups, road nodes, lines, depots and vehicles.

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "entity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_create_lineAction

Create a line between owned stations. Indices are zero-based. Native validation decides route compatibility.

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "type": "integer",
            "minimum": 0
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          },
          "cargo": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 40
            },
            "maxItems": 20,
            "default": [
              "PASSENGERS"
            ],
            "description": "Cargo type names this stop loads: PASSENGERS for buses, a cargo name such as COAL for trucks, or [\"ALL\"]"
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "name",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_update_lineAction

Replace the stops and loading modes of an owned line, preserving its other settings.

{
  "type": "object",
  "properties": {
    "line": {
      "type": "integer",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stationGroup": {
            "$ref": "#/properties/line"
          },
          "station": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "terminal": {
            "type": "integer",
            "minimum": 0,
            "default": 0
          },
          "loadMode": {
            "type": "string",
            "enum": [
              "LOAD_IF_AVAILABLE",
              "FULL_LOAD_ANY",
              "FULL_LOAD_ALL"
            ],
            "default": "LOAD_IF_AVAILABLE"
          },
          "maxWaitingTime": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600,
            "default": 60
          },
          "cargo": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 40
            },
            "maxItems": 20,
            "default": [
              "PASSENGERS"
            ],
            "description": "Cargo type names this stop loads: PASSENGERS for buses, a cargo name such as COAL for trucks, or [\"ALL\"]"
          }
        },
        "required": [
          "stationGroup"
        ],
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 32
    }
  },
  "required": [
    "line",
    "stops"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_buy_vehicleAction

Quote or buy one vehicle/consist at an owned depot. Defaults to quote only. maxPrice limits the quoted purchase price; native game validates compatibility and funds.

{
  "type": "object",
  "properties": {
    "depot": {
      "type": "integer",
      "minimum": 0
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 240
      },
      "minItems": 1,
      "maxItems": 16
    },
    "maxPrice": {
      "type": "number",
      "minimum": 0
    },
    "purchase": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "depot",
    "models",
    "maxPrice"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_loansRead

List the bank loans the game currently offers and the loans the company holds, with amounts, terms and interest.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_take_loanAction

Take one bank loan offered by the native finance system (max 4 held). maxAmount rejects a larger offer. Acknowledgement is not proof: read tf3_loans or the snapshot balance afterwards.

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "Small",
        "Medium",
        "Large",
        "ExtraLarge"
      ]
    },
    "maxAmount": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "type",
    "maxAmount"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_repay_loanAction

Repay one held loan in full if the balance covers it. Confirm with tf3_loans afterwards.

{
  "type": "object",
  "properties": {
    "loan": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "loan"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_sell_vehicleAction

Send an owned vehicle to a depot and sell it on arrival. Sale may be delayed; acknowledgement is not proof of sale.

{
  "type": "object",
  "properties": {
    "vehicle": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "vehicle"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_roadAction

Preview or build one road between two points (5-500 m). Points are an existing node {node} or {x,y[,z]} (z defaults to ground). Only free ends (nodes joining fewer than 2 roads) can be connected: junctions are refused because they crash this game build. At a free end the road continues in the stub direction, which is what stations and depots need. snap (m) attaches a point to the nearest free end within that distance. Rejections return the game reason and cost.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "from": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/from/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        },
        "node": {
          "type": "integer",
          "minimum": 0
        },
        "tx": {
          "type": "number",
          "minimum": -1,
          "maximum": 1,
          "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
        },
        "ty": {
          "type": "number",
          "minimum": -1,
          "maximum": 1
        }
      },
      "additionalProperties": false
    },
    "to": {
      "$ref": "#/properties/from"
    },
    "snap": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "default": 0
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_road_pathAction

Preview or build a smooth multi-segment road through 2-80 points in one atomic proposal (each segment 5-500 m). Use waypoints to curve around towns, rivers and slopes. Same point and free-end rules as tf3_build_road. Optional stops (EXPERIMENTAL, the game accepts them but creates no stop on build 40425) place street bus/truck stops on the new segments (segment is 1-based, param 0.1-0.9 along it; models from tf3_resources kind=stops); a stop on your own road is connected by construction. Returns the new road nodes with their free ends.

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "points": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "minimum": -32768,
            "maximum": 32768
          },
          "y": {
            "$ref": "#/properties/points/items/properties/x"
          },
          "z": {
            "type": "number",
            "minimum": -500,
            "maximum": 5000
          },
          "node": {
            "type": "integer",
            "minimum": 0
          },
          "tx": {
            "type": "number",
            "minimum": -1,
            "maximum": 1,
            "description": "Optional road heading at this waypoint (unit x); tf3_plan_connect fills it"
          },
          "ty": {
            "type": "number",
            "minimum": -1,
            "maximum": 1
          }
        },
        "additionalProperties": false
      },
      "minItems": 2,
      "maxItems": 80
    },
    "snap": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "default": 0
    },
    "stops": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "segment": {
            "type": "integer",
            "minimum": 1
          },
          "param": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 0.9,
            "default": 0.5
          },
          "left": {
            "type": "boolean",
            "default": false
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "segment",
          "model"
        ],
        "additionalProperties": false
      },
      "maxItems": 8,
      "default": []
    },
    "stopIdMode": {
      "type": "string",
      "enum": [
        "index",
        "shared",
        "none"
      ]
    },
    "build": {
      "type": "boolean",
      "default": false
    },
    "allowWarnings": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "template",
    "points"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_road_network_nearRead

List road nodes within a radius of a point, nearest first: position, how many roads join there, whether it is a free end you may connect to (canConnect) and its outward direction. Use before every road build.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "radius": {
      "type": "number",
      "minimum": 10,
      "maximum": 2000,
      "default": 300
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 80,
      "default": 40
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_overviewRead

One-call state for planning: year, balance, loan, your station groups (with station indices and positions), depots, lines, vehicles, and every town and industry with position and type. Prefer this over many list calls.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_place_stopAction

Place a street stop (bus/truck stop) ON an existing road at x,y using the game's own stop tool, operated through computer use. The point must lie on a road you or the town built, at least 10 m from a junction or road end. Slow (about 1-3 minutes); the call waits for the operator. Returns the new stationGroup to use in lines, or a reason it could not be placed.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "cargo": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "x",
    "y",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_place_depotAction

Place a road depot with the game's own depot tool, operated through computer use. Scripted depots (tf3_build_depot_near, tf3_build_construction) are NOT connected to the road for vehicle routing: vehicles bought there cannot be assigned to lines. Pick open flat ground right beside a road you built (the depot entrance must touch the road side). Slow (1-3 minutes); the call waits for the operator. Returns the new depot entity, or a reason.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "default": "Depot"
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_cameraRead

Move the player camera to a map position so humans watching can see the work. Does not change the world.

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "minimum": -32768,
      "maximum": 32768
    },
    "y": {
      "$ref": "#/properties/x"
    },
    "distance": {
      "type": "number",
      "minimum": 20,
      "maximum": 3000,
      "default": 250
    }
  },
  "required": [
    "x",
    "y"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_stationAction

EXPERIMENTAL, not working on TF3 build 40425: the game accepts the request but creates no station. Preview or build a road station that works with lines: a modular street terminal with platforms and an entrance (passenger by default, cargo=true for trucks). Place it on open ground beside a town or next to an industry, then call tf3_road_network_near at its position to find its road stubs and connect them. Use this instead of small street stops, which this bridge cannot place.

{
  "type": "object",
  "properties": {
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/position/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "cargo": {
      "type": "boolean",
      "default": false
    },
    "platforms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2,
      "default": 1
    },
    "nameStyle": {
      "type": "string",
      "enum": [
        "full",
        "plain",
        "short"
      ]
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_build_constructionAction

Preview specification or build a station/depot from the resource catalog. Native costs/collisions apply. Preview does not quote price. Does not automatically connect roads.

{
  "type": "object",
  "properties": {
    "resource": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240
    },
    "position": {
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -32768,
          "maximum": 32768
        },
        "y": {
          "$ref": "#/properties/position/properties/x"
        },
        "z": {
          "type": "number",
          "minimum": -500,
          "maximum": 5000
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ],
      "additionalProperties": false
    },
    "rotation": {
      "type": "number",
      "minimum": -3.141592653589793,
      "maximum": 3.141592653589793,
      "default": 0
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "params": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "boolean"
          },
          {
            "type": "string",
            "maxLength": 120
          }
        ]
      },
      "propertyNames": {
        "maxLength": 80
      },
      "default": {}
    },
    "build": {
      "type": "boolean",
      "default": false
    }
  },
  "required": [
    "resource",
    "position",
    "name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
tf3_game_rulesRead

How the game works for an AI player: what a working service needs, money and loans, vehicle years, the proven road-building recipe, this bridge’s limits (no junctions) and efficient play. Read once at the start.

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Operating limits

One mailbox request runs at a time. A timeout means a mutation's outcome is unknown: inspect before retrying. Import jobs block other mutations. Ownership checks guard vehicle and line management. Native commands retain game validation; errors are never deliberately ignored.

Purchases default to a quote and require purchase: true to execute. Road and construction tools default to previews and require build: true. Road previews return geometry and base price only; terrain, collision and final cost are not quoted. Roads are straight surface segments of 5–500 m, with optional existing endpoint nodes. They do not split edges or build bridges/tunnels. Construction currently supports base-game stations and depots; valid parameters depend on each resource.

Line stops use zero-based station and terminal indices. Loading modes are available cargo, full any, or full all. Cargo filtering, loans, track/bridge/tunnel building, bulldozing and automatic route planning are not implemented. The bridge offers fixed actions, not arbitrary Lua execution.

05 / RECOVERY

Read the widget. Verify the world.

Ready, Active or Idle?

Ready means the bridge is loaded. Active means a request succeeded in the last 30 seconds. Idle means the last success is older. None proves a persistent socket connection: this bridge uses local files. Busy is waiting for a game command; Error reports the latest failure.

No acknowledgement or missing tools

Keep a world loaded with the mod enabled. Restart TF3 after mod updates and restart the MCP server after server changes. Verify TF3_USERDATA points at the same Steam account. Do not repeat a timed-out mutation until you inspect the world.

Import error or empty Load Map list

Read tf3_map_import_status. A pending or failed import is not a completed saved map. Verify the installed map assets and required editor settings. Use the returned save name after successful completion; map saves and game saves use separate namespaces.

“Recipe child must be a layout”

This was a status-widget layout error in an earlier local build. Upgrade the companion, restart TF3 and reload. Current widget uses a layout root. Do not use repeated automatic UI reloads to work around a startup error.

Mod details show network error −2

The details page may be unable to fetch online content. That message alone does not prove failure of the local file bridge. Verify activation in a loaded world with tf3_game_snapshot.

“Another MCP request is active”

Wait for the active request. If a server crashed, first confirm no MCP request or importer remains active; only then remove mcp_bridge/server.lock. Deleting a lock while a request is running can cause conflicting actions.

06 / PUBLICATION

Two mods. Separate release checks.

AI MCP Bridge needs a standalone installer, license, desktop compatibility statement and a completed gameplay acceptance pass. Lietuva — Lithuania Island needs a clean map export that loads without the bridge, attribution and a balanced test delivery.

Both are still local artifacts. Plan: package → private Mod Hub beta → clean-install checks → review → public release.

Read the full submission plan and listing drafts →

Official process: TF3 publishing guide · Modding guidelines. Recheck current requirements in My Mods before uploading.