Skip to main content
Glama

Set how a new game opens

set_startup
DestructiveIdempotent

Sets the game's opening state in one call: title, start map, cell, facing, party, and switch/variable tables, preventing partial patches from dropping keys and blocking wall placements.

Instructions

Write the opening state of the game in one call: the title on the splash and in the window, where New Game puts the player (map, cell, facing), who starts in the party, and the switch and variable name tables. patch_database_entry can do all of it and has to be handed advanced whole to touch one key of it, which is the shape of mistake this exists to prevent — a partial nested patch drops the keys you did not send. Idempotent: re-running a build script sets the same opening rather than appending. Reads back the start cell through the engine's own passability rules and refuses to place the player inside a wall, because that is a game that boots and never moves.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleNoThe game title the engine shows and the save files carry
startXNo
startYNo
troopIdNo
switchesNoNames by index, or keyed by id — either way the array the engine indexes is what gets written
variablesNoNames by index, or keyed by id
startMapIdNo
testBattleNoAlso set the troop the editor's test battle uses
partyMembersNoActor ids, in the order the engine lines them up
startDirectionNo2 down, 4 left, 6 right, 8 up

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.2

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=true, and the description reinforces idempotency ('re-running a build script sets the same opening rather than appending') while adding behavior the annotations do not cover: it validates placement through the engine's passability rules and refuses to place the player inside a wall. It does not discuss failure modes for other params (invalid map/troop ids), keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and every sentence carries information. The middle sentence about patch_database_entry is a touch winding, but the whole paragraph is efficient for a tool with this much behavioral nuance.

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

Completeness4/5

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

With no output schema, the description still conveys the write's scope, its idempotent/validating behavior, and the sibling it replaces. The remaining gap is the 0-required-param case: it never says whether omitting a field leaves it untouched or clears it, which matters for a destructive write.

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

Parameters3/5

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

Schema coverage is 60%, so the schema carries much of the load. The description maps conceptual groups to params (title, start map/cell/facing, party members, switch/variable tables), but adds no syntax or format detail for the undocumented params (startX, startY, startMapId, troopId), so it lands at the baseline for partial coverage.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Write the opening state of the game in one call') and then enumerates exactly which facets it covers: title on the splash/window, New Game placement (map, cell, facing), starting party, and the switch/variable name tables. It is clearly distinguishable from siblings like set_map_properties or patch_database_entry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names the alternative (patch_database_entry) and explains why this tool exists instead: patch_database_entry must be handed `advanced` whole and a partial nested patch drops unset keys. This is a concrete when-to-use/when-not-to-use rule rather than implied usage.

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