Skip to main content
Glama

session

Destructive

Saves the current Civilization V state, loads a named or latest save, exits to main menu, and sets the hotseat seat this server plays so you can preserve progress before risky turns.

Instructions

Saves, loads and the seat of this game session: keep a state before a risky turn, open another save, leave a finished game, say which hotseat seat this server plays. It never plays a turn; use turn for that. Side effects: a load replaces the game on screen for everyone on it, and a hotseat game loads paused until turn(action='wait'); the notebook is per game and seat, so it follows a save of the same game and is not touched by a load. action -- save: a quick save of the game on screen into the one quick-save slot (each finished turn's autosave overwrites that slot, so copy a save you want kept); load {filename}: open that save (a name as the game lists it, without the single/ prefix; the refusal lists the legal ones), replacing the unsaved state, so save first; load_latest: open the newest save, whichever game it is; main_menu: leave the game for the main menu (the game_over gate's way out); seat {seat}: which human seat (0 or 1) this server plays in a hotseat game -- a server pinned with --seat refuses a change onto the other human seat, and never move onto the seat on screen. Returns {ok: true, saved / loaded, turn, seat, screen} or {ok: false, err} naming why (an unknown filename with the list, a seat that is someone else's, a game operation already running). In a game with other people ask the human before loading.

Input Schema

NameRequiredDescriptionDefault
argsNoload: {filename} (a save's name without the single/ prefix); seat: {seat} (0 or 1)
actionYessave | load | load_latest | main_menu | seat

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Goes well past destructiveHint=true: a load replaces the on-screen game for everyone, hotseat loads come up paused until turn(action='wait'), the quick-save slot is overwritten by every turn's autosave, and the notebook is per game-and-seat so it follows a save but survives a load. These are non-obvious side effects an agent could not infer from annotations.

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?

Every sentence carries information — no filler — and the ordering is sensible (purpose, non-scope, side effects, per-action detail, returns). However it is delivered as one dense semicolon-chained block rather than separated per-action lines, which makes it harder to scan for the one action an agent needs.

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

Completeness5/5

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

No output schema, yet the return shape is documented ({ok: true, saved/loaded, turn, seat, screen} or {ok: false, err}) along with the three failure modes (unknown filename, someone else's seat, operation already running). Nothing needed to call any of the five actions correctly is missing.

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

Parameters5/5

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

Schema coverage is already 100%, so baseline is 3, but the description adds real meaning: filename is given without the single/ prefix, a refusal lists the legal names, seat is 0 or 1 with a --seat-pinned server refusing a move to the other human seat and a rule against moving onto the seat on screen.

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?

Opens with a specific verb+resource statement and then enumerates all five actions (save, load, load_latest, main_menu, seat) with a one-line definition each. It explicitly distinguishes itself from the sibling: "It never plays a turn; use turn for that."

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?

Gives explicit routing: use turn to actually play, use main_menu as "the game_over gate's way out," use save before load because load discards unsaved state. It also adds a social precondition ("In a game with other people ask the human before loading") and distinguishes load from load_latest by scope.

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