Skip to main content
Glama

civ6-mcp

An MCP server that lets LLM agents play full games of Civilization VI.

Connect any MCP-compatible client — Claude Code, Codex, Gemini CLI, or your own — to a running Civ 6 game. The agent reads game state, moves units, manages cities, conducts diplomacy, and ends turns, all through the game's own rule-enforcing APIs. No cheats, no vision model required.

Capabilities

76 tools covering the full gameplay loop:

  • Units — list, move, attack, fortify, found cities, build improvements, promote, upgrade

  • Cities — inspect, set production, purchase units/buildings with gold, manage focus

  • Map — explore terrain, resources, fog of war; get settle and district placement advice

  • Research — browse tech and civic trees, set research targets

  • Diplomacy — relationships, modifiers, delegations, embassies, alliances, peace deals

  • Trade — propose and respond to deals, manage trade routes and destinations

  • Government — swap policy cards, change governments, choose era dedications

  • Governors — appoint, assign to cities, promote

  • Religion — found pantheons and religions, select beliefs, track spread

  • Great People — recruit, patronize, reject

  • World Congress — vote on resolutions, manage diplomatic favor

  • Victory — track progress across all victory conditions

  • Game lifecycle — save, load, launch, restart, kill

Every turn, end_turn takes before/after snapshots and reports what happened: units damaged, cities grew, production completed, threats spotted near your cities.

Related MCP server: mcp-steam

Quick start

1. Configure Civ 6

Enable the FireTuner debug interface and configure recommended settings:

Setting

Value

Why

Tuner

Enabled

Required — opens the TCP debug port the MCP server connects to. Disables achievements.

Auto End Turn

Disabled

The agent controls when turns end. Auto-end interferes with the blocker resolution flow.

Windowed mode

Recommended

Lets you watch the game while the agent plays. Required for OCR-based save loading.

Windows: All three settings are available in the in-game Options menu. The Tuner setting appears as "Tuner (disables achievements)" under gameplay options.

macOS: The Tuner setting is not exposed in the menu. Edit AppOptions.txt directly and set EnableTuner 1:

~/Library/Application Support/Sid Meier's Civilization VI/Firaxis Games/Sid Meier's Civilization VI/AppOptions.txt

Linux: Same as macOS — edit AppOptions.txt directly and set EnableTuner 1:

~/.local/share/aspyr-media/Sid Meier's Civilization VI/AppOptions.txt

Install the Civ 6 SDK — the tuner server is part of the SDK, not the base game:

  1. In Steam, go to Library → filter by Tools

  2. Find and install "Sid Meier's Civilization VI SDK"

Important notes:

  • Close FireTuner.exe (the SDK's GUI tool) before running civ6-mcp — the game only allows one tuner connection at a time

  • Do not run from WSL — the network bridging between WSL2 and Windows is unreliable and the tuner server locks up after failed connections

  • If the connection fails, restart the game — the tuner often hangs after a bad handshake and won't recover until the process is recycled

  • The native Linux port is required — the FireTuner debug interface is built into the native binary. Proton/Wine builds do not expose it.

  • The game runs as a single Civ6 process launched via Steam Linux Runtime (scout-on-soldier).

  • GUI automation (OCR-based menu navigation) requires X11. On Wayland, the game typically runs under XWayland which should work, but a native X11 session is most reliable.

Restart Civ 6. The game will listen on TCP port 4318 for connections.

2. Install

git clone https://github.com/lmwilki/civ6-mcp.git
cd civ6-mcp
uv sync

For GUI automation features (screenshot, OCR-based menu navigation):

# macOS
uv pip install 'civ6-mcp[launcher-macos]'

# Windows (uses built-in Windows OCR — no external binaries needed)
uv pip install 'civ6-mcp[launcher-windows]'

# Linux (Ubuntu/Debian)
sudo apt install xdotool tesseract-ocr
uv pip install 'civ6-mcp[launcher-linux]'

3. Test the connection

With Civ 6 running and a game loaded:

uv run python scripts/test_connection.py

You should see a successful handshake and a list of Lua states (GameCore_Tuner, InGame, etc.).

4. Configure your MCP client

The server runs over stdio. Point your client at it:

The repo includes .mcp.json — detected automatically:

cd civ6-mcp
claude

Add to your config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "civ6": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/civ6-mcp", "civ-mcp"]
    }
  }
}

Add to .codex/config.toml in the project root:

[mcp_servers.civ6]
command = "uv"
args = ["run", "--directory", "/path/to/civ6-mcp", "civ-mcp"]

Add to .gemini/settings.json in the project root:

{
  "mcpServers": {
    "civ6": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/civ6-mcp", "civ-mcp"]
    }
  }
}

The server speaks stdio JSON-RPC:

uv run civ-mcp

5. Play

Load a game in Civ 6, connect your client, and try:

Play my Civ 6 game. Start by getting an overview, then check units and
cities, and play through the turn.

The agent will orient with get_game_overview, scan the map for threats, move units, set production and research, handle diplomacy, and end the turn.

As a benchmark

Civilization VI is a compelling environment for evaluating LLM strategic reasoning. Games run 300+ turns with compounding decisions, incomplete information, and multiple competing objectives — a significant step up from single-turn or short-horizon tasks.

  • Multi-turn planning — decisions compound over hundreds of turns with delayed payoffs

  • Incomplete information — fog of war, hidden AI intentions, unexplored map

  • Resource management — balancing gold, production, science, culture, faith, and military

  • Opponent modeling — reading diplomatic signals, anticipating AI behavior

  • Strategic adaptation — responding to threats, shifting priorities mid-game

The MCP interface provides a clean abstraction: the model receives narrated game state as text and responds with tool calls. All game rules are enforced by the engine. A companion web app lets you replay sessions turn by turn.

How it works

Claude / Any MCP Client
    |  stdio (JSON-RPC)
    v
MCP Server (Python)    <- 70+ tools
    |
    |  Generates Lua code at runtime
    |  TCP :4318
    v
Civilization VI        <- Game is the TCP server

The server maintains a persistent TCP connection to Civ 6 via the FireTuner debug protocol. It generates Lua code, executes it inside the game's two Lua VMs (GameCore for reading state, InGame for issuing commands), parses the output, and returns narrated text to the LLM.

The repo includes an AGENTS.md playbook (symlinked as CLAUDE.md for Claude Code) with detailed instructions for agents: turn loop, combat, diplomacy, common pitfalls. See the devlog for the full development story, including reverse-engineering the FireTuner protocol and the many API quirks discovered along the way.

Requirements

  • macOS, Windows, or Linux with Civilization VI (Steam version, Gathering Storm DLC)

  • Python 3.12+ with uv

  • An MCP client (Claude Code, Codex, Gemini CLI, or any MCP-compatible client)

License

MIT

Available Tools

76 tools
appoint_governorA

Appoint a new governor.

Args:
    governor_type: e.g. GOVERNOR_THE_EDUCATOR (Pingala), GOVERNOR_THE_DEFENDER (Victor)

Requires available governor points. Use get_governors to see options.
ParametersJSON Schema
NameRequiredDescriptionDefault
governor_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description discloses the key behavioral requirement (governor points) and provides example values. It does not detail outcomes or reversibility, but is adequate for a simple appointment action.

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

Conciseness5/5

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

Three sentences with no wasted words; the main action is front-loaded and the parameter description is concise yet informative.

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?

The description covers the prerequisite and parameter examples, and an output schema exists to document return values. It could mention restrictions like not appointing if a governor already exists, but overall is complete for this simple tool.

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?

The schema has 0% description coverage, but the description adds concrete examples (e.g., GOVERNOR_THE_EDUCATOR (Pingala), GOVERNOR_THE_DEFENDER (Victor)), which is essential for correct parameter selection.

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 clearly states 'Appoint a new governor' with specific examples, defining the action and resource. It distinguishes from sibling tools like promote_governor and get_governors.

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?

Explicitly mentions prerequisite 'Requires available governor points' and directs to get_governors for options, telling the agent when and how to use the tool.

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

assign_governorA

Assign an appointed governor to a city.

Args:
    governor_type: The governor type (from get_governors output)
    city_id: The city ID (from get_cities output)

Governor must already be appointed. Takes several turns to establish.
ParametersJSON Schema
NameRequiredDescriptionDefault
governor_typeYes
city_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses precondition (governor must be appointed) and behavioral trait (takes several turns). Could also mention side effects or error conditions.

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

Conciseness5/5

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

Three concise sentences plus parameter list. All information is front-loaded and no unnecessary text. Every sentence adds value.

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?

Given 2 parameters and no enums, the description covers preconditions and latency. An output schema exists (not shown) so return format is handled elsewhere. Could briefly mention error cases or success indicators.

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

Parameters4/5

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

Schema coverage is 0% (no descriptions in input schema). Description adds meaning by specifying sources: 'governor_type (from get_governors output)' and 'city_id (from get_cities output).' This helps the agent select correct values.

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

Purpose4/5

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

The description clearly states 'Assign an appointed governor to a city,' using a specific verb and resource. It distinguishes from siblings like 'appoint_governor' and 'promote_governor' by implication but does not explicitly differentiate.

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

Usage Guidelines4/5

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

Provides clear context: 'Governor must already be appointed' and 'Takes several turns to establish.' This guides the agent on when to use (after appointment) and what to expect (latency), though no explicit alternatives or exclusions are given.

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

change_governmentA

Switch to a different government type.

Args:
    government_type: e.g. GOVERNMENT_CLASSICAL_REPUBLIC, GOVERNMENT_OLIGARCHY

Use get_policies to see current government. First switch after
unlocking a new tier is free (no anarchy).
ParametersJSON Schema
NameRequiredDescriptionDefault
government_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description must cover behavior. It mentions 'no anarchy' for first switch, implying penalties for subsequent ones, but does not detail side effects like anarchy duration or other consequences.

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

Conciseness5/5

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

Three concise sentences with clear purpose front-loaded. No wasted words.

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?

Given the simple action and presence of output schema, description covers the essential: purpose, parameter hints, and a key behavioral note. Missing details about consequences of non-first switches, but overall adequate.

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

Parameters2/5

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

Only parameter government_type has no schema description (0% coverage). Description gives examples but no full list of valid values, leaving ambiguity. Compensates partially but insufficiently.

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?

Description clearly states 'Switch to a different government type' with specific verb and resource. Examples given, and it distinguishes from related tools like set_policies and choose_dedication.

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

Usage Guidelines4/5

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

Tells when to use ('Use get_policies to see current government') and provides a behavioral tip about first switch being free. Does not explicitly mention alternatives or when not to use, but context is adequate.

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

choose_dedicationA

Choose a dedication/commemoration for the current era.

Args:
    dedication_index: The index of the dedication (from get_dedications output)

Use get_dedications first to see available options and their bonuses.
ParametersJSON Schema
NameRequiredDescriptionDefault
dedication_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

No annotations exist, and the description only says 'choose a dedication' without mentioning side effects, irreversibility, or costs. While the action is simple, additional transparency about the effect would improve it.

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

Conciseness5/5

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

The description is extremely concise, with a clear title line and structured Args section, front-loading essential information.

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?

For a simple tool with one parameter and an output schema, the description fully explains how to use it and what prerequisite step is needed.

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

Parameters4/5

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

The description adds meaning to the parameter by explaining that dedication_index comes from get_dedications output, which is not evident from the schema alone (0% 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 clearly states the action ('choose') and the resource ('dedication/commemoration for the current era'), distinguishing it from sibling tools like get_dedications and choose_pantheon.

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?

Explicitly instructs to use get_dedications first to see available options, providing clear prerequisite and usage context.

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

choose_pantheonA

Found a pantheon with the specified belief.

Args:
    belief_type: e.g. BELIEF_GOD_OF_THE_FORGE, BELIEF_DIVINE_SPARK

Use get_pantheon_beliefs first to see options. Requires enough faith
and no existing pantheon.
ParametersJSON Schema
NameRequiredDescriptionDefault
belief_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description partially compensates by stating requirements (faith, no existing pantheon) but does not disclose outcomes like faith consumption or irreversibility. More detail on side effects would improve transparency.

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

Conciseness5/5

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

The description is extremely concise at three sentences plus an Args line, with no redundant information. It front-loads the core action and immediately follows with critical usage context.

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?

Given the tool's simplicity (one parameter, clear preconditions) and the existence of an output schema, the description adequately covers the action, prerequisites, and related tool. Minor missing details like return behavior are acceptable for this scope.

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

Parameters4/5

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

The description provides concrete examples ('e.g. BELIEF_GOD_OF_THE_FORGE, BELIEF_DIVINE_SPARK') and directs the agent to 'get_pantheon_beliefs' for options, adding meaning beyond the bare schema definition of a string parameter.

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

Purpose4/5

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

The description uses the verb 'Found' (likely meaning 'choose') and specifies the resource 'pantheon with the specified belief.' It distinguishes from siblings like 'found_religion' and 'get_pantheon_beliefs' by focusing on the pantheon founding action.

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

Usage Guidelines4/5

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

Explicitly states prerequisites ('Requires enough faith and no existing pantheon') and suggests using 'get_pantheon_beliefs' first to see options, providing clear guidance on when and how to use the tool.

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

city_actionA

Issue a command to a city.

Args:
    city_id: City ID (from get_cities output)
    action: Currently supported: 'attack' (city ranged attack)
    target_x: Target X coordinate (required for attack)
    target_y: Target Y coordinate (required for attack)

For attack: city must have walls and not have fired this turn.
Range is 2 tiles from city center.

For captured/disloyal city decisions (city_id is ignored, uses pending city):
- 'keep': Keep the city (works for both captured and loyalty-flipped cities)
- 'reject': Reject/free a disloyal city (loyalty flip only)
- 'raze': Raze a captured city (military conquest only)
- 'liberate_founder': Liberate to original founder
- 'liberate_previous': Liberate to previous owner
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes
actionYes
target_xNo
target_yNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses key behaviors: attack requires walls and not fired this turn, range 2; city_id is ignored for city decisions. Missing details on success/failure or irreversible effects, but generally good.

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?

Well-structured with sections for attack and city decisions. Somewhat verbose but all information is relevant. Front-loaded with purpose.

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?

Covers inputs and behavior thoroughly. Output schema exists, so return values need not be explained. No critical gaps identified.

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 0%, so description fully compensates. It explains each parameter: city_id source, action list, target coordinates required for attack. Adds meaning beyond the schema's type definitions.

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

Purpose4/5

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

The description clearly states 'Issue a command to a city' and lists specific actions (attack, keep, reject, raze, etc.), making the purpose clear. It does not explicitly differentiate from sibling tools, but the variety of actions makes it distinct.

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

Usage Guidelines3/5

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

The description provides some usage guidance, such as requirements for attack and explanations for captured/disloyal city actions. However, it does not explicitly state when to use this tool versus alternatives or when not to use it.

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

dismiss_popupA

Dismiss any blocking popup in the game UI.

Call this if you suspect a popup (e.g. historic moment, boost notification) is blocking interaction.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

No annotations provided; description lacks details on side effects (e.g., what happens if no popup, safety of repeated calls). Only states the action.

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

Conciseness5/5

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

Two sentences, front-loaded with action, no wasted words.

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?

For a simple no-parameter action, description covers purpose and when to use; minor gap in behavioral guardrails.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%; description adds no parameter info, which is acceptable.

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 clearly states the tool dismisses blocking popups in the game UI with specific examples (historic moment, boost notification), and no sibling tool serves this function.

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

Usage Guidelines4/5

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

Provides explicit instruction to call when suspecting a popup is blocking interaction, but does not specify when not to use or alternatives.

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

end_turnA
Destructive

End the current turn.

Make sure you've moved all units, set production, and chosen research
before ending the turn.

All 5 reflection parameters are required and must be non-empty.
These form the per-turn diary — your persistent memory across sessions:
    tactical: What happened this turn — combat, movements, improvements.
    strategic: Current standing vs rivals — yields, city count, victory path.
    tooling: Tool issues or observations. Write "No issues" if none.
    planning: Concrete actions for the next 5-10 turns.
    hypothesis: Predictions — enemy behavior, resource needs, timelines.

IMPORTANT: Reflections are recorded BEFORE the AI processes its turn.
Anything that surfaces after end_turn (diplomacy proposals, AI movements,
events reported in the turn result) belongs in the NEXT turn's diary.
If end_turn is blocked and you call it again after resolving the blocker,
the diary entry from the first call is kept — do not repeat reflections.
ParametersJSON Schema
NameRequiredDescriptionDefault
tacticalNo
strategicNo
toolingNo
planningNo
hypothesisNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true. Description adds context about reflection recording timing and diary handling across blocked calls, but does not significantly expand beyond what annotations imply.

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?

Well-structured with clear sections, but slightly verbose with redundant explanations. Could tighten without losing information.

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?

Covers purpose, prerequisites, parameter semantics, and edge cases. Given 5 parameters and no output schema, description is thorough and sufficient for correct tool invocation.

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?

With 0% schema description coverage, description fully explains each parameter's purpose and content requirements, adding essential meaning beyond the bare schema.

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?

Description clearly states the tool ends the current turn, with a specific verb-resource pair. It distinguishes from siblings by being the turn-ending action, and no other sibling tool performs this function.

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?

Explicitly states when to use it: after moving units, setting production, and choosing research. Also explains handling of blocked calls and diary persistence, providing clear usage context.

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

form_allianceA

Form an alliance with another civilization.

Args:
    other_player_id: The player ID (from get_diplomacy output)
    alliance_type: One of: MILITARY, RESEARCH, CULTURAL, ECONOMIC, RELIGIOUS

Requires declared friendship and Diplomatic Service civic.
Use get_trade_options to check alliance eligibility first.
ParametersJSON Schema
NameRequiredDescriptionDefault
other_player_idYes
alliance_typeNoMILITARY

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description must convey behavioral traits. It mentions prerequisites but doesn't disclose what happens on success or failure (e.g., whether an alliance is formed immediately or a confirmation needed). It also doesn't describe side effects. Adequate but not thorough.

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

Conciseness5/5

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

The description is concise, using five sentences to cover purpose, parameters, and prerequisites. It is front-loaded and every sentence contributes essential information without fluff.

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?

Given the presence of an output schema, the description doesn't need to explain return values. It covers prerequisites, parameter sourcing, and eligibility check. Minor omission: it doesn't address what happens if conditions fail, but overall it is complete for tool invocation.

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?

The description adds significant value beyond the schema, explaining each parameter: 'other_player_id: The player ID (from get_diplomacy output)' and 'alliance_type: One of: MILITARY, RESEARCH, CULTURAL, ECONOMIC, RELIGIOUS.' This compensates for the 0% schema description 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 clearly states the tool's purpose: 'Form an alliance with another civilization.' It specifies the verb and resource, and the arguments list distinguishes it from sibling tools like propose_peace or propose_trade.

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

Usage Guidelines4/5

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

The description provides explicit prerequisites: 'Requires declared friendship and Diplomatic Service civic.' It also directs the user to check eligibility via get_trade_options. While it doesn't explicitly state when not to use, the guidelines are clear and helpful.

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

found_religionB

Found a religion with a chosen name, follower belief, and founder belief.

Args:
    religion_type: e.g. RELIGION_HINDUISM, RELIGION_BUDDHISM, RELIGION_ISLAM
    follower_belief: e.g. BELIEF_WORK_ETHIC, BELIEF_CHORAL_MUSIC
    founder_belief: e.g. BELIEF_STEWARDSHIP, BELIEF_CHURCH_PROPERTY

Requires your Great Prophet to have already activated on a Holy Site
(via UNITOPERATION_FOUND_RELIGION). Use get_religion_beliefs
first to see available options.
ParametersJSON Schema
NameRequiredDescriptionDefault
religion_typeYes
follower_beliefYes
founder_beliefYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses the prerequisite but not other behavioral traits like irreversibility, effects of already founding a religion, or error conditions. For a mutation action, more transparency is needed.

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?

The description is succinct with three focused sentences: purpose, parameter listing, and prerequisite. It uses a clear bullet-like list for args. No filler, but the arg examples could be integrated more smoothly.

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

Completeness3/5

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

The tool has an output schema, so return values are covered there. The description provides prerequisite context and suggests a related tool. Missing details on failure modes or state changes. Adequate but not comprehensive for a complex game action.

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?

The input schema has 0% parameter descriptions. The description adds example values for each parameter (e.g., RELIGION_HINDUISM, BELIEF_WORK_ETHIC), which helps the agent understand the expected format. However, it does not enumerate all possible values or explain semantics fully.

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

Purpose4/5

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

The description clearly states the action: 'Found a religion' with specific parameters. It distinguishes from sibling tools (e.g., get_religion_beliefs) by being the action to create a religion. However, it could be more explicit about the result or effect.

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

Usage Guidelines4/5

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

The description specifies the prerequisite: Great Prophet must have activated on a Holy Site. It also advises using get_religion_beliefs first to see options. This guides the agent on when to use the tool. No explicit when-not, but context is clear.

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

get_builder_tasksA
Read-only

Get a prioritized task board for all your builders.

Scans your territory for tiles needing improvements and matches them
with idle builders. Like the builder lens in the UI — shows what to
build where and which builder is closest.

Priority tiers:
- URGENT: Pillaged improvements (yield loss), unimproved strategic resources
- HIGH: Unimproved luxury/bonus resources
- NORMAL: Empty tiles that could benefit from farms/mines/lumber mills

Call this before issuing builder orders each turn.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, which is consistent. The description adds behavioral context: scanning tiles and idle builders, matching them, and defining priority tiers. No contradictions.

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

Conciseness5/5

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

Description is concise with four sentences, front-loading the purpose, and using bullet-like formatting for tiers. Every sentence is informative.

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?

Given no parameters, existing output schema, and clear annotations, the description is complete. It covers what the tool does, when to use it, and what to expect (priority tiers).

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

Parameters4/5

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

No parameters exist (empty schema), so schema coverage is 100% by default. The description adds value by explaining the output (priority tiers) beyond what the empty schema provides.

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 clearly states 'Get a prioritized task board for all your builders,' specifying the action and resource. It distinguishes itself from siblings by likening it to the builder lens in the UI, which is unique among many get_* tools.

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?

Explicitly says 'Call this before issuing builder orders each turn,' providing clear when-to-use guidance. No alternatives are mentioned, but the context implies it's the go-to for builder task prioritization.

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

get_citiesA
Read-only

List all your cities with yields, population, production, growth, and loyalty.

Each city shows its id (needed for production commands). Cities losing loyalty show warnings with flip timers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Description adds context beyond annotations: it notes cities show id for production commands and loyalty warnings with flip timers. Does not contradict readOnlyHint.

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

Conciseness5/5

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

Two concise sentences front-loading purpose and key details, with no wasted words.

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?

Description covers return values (yields, population, etc.) and adds id and loyalty warnings. Output schema exists but is not shown; description is sufficient for understanding tool output.

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

Parameters4/5

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

No parameters exist; schema coverage is 100%. Baseline score of 4 applies as description need not add parameter info.

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 clearly states it lists all cities with specific attributes (yields, population, etc.) and includes id and loyalty warnings, distinguishing it from sibling tools that focus on individual aspects.

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

Usage Guidelines3/5

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

The description implies use for getting an overview of all cities, but does not explicitly state when to use this tool versus more specific siblings (e.g., get_city_production) or provide exclusions.

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

get_city_productionA
Read-only

List what a city can produce right now.

Args:
    city_id: City ID (from get_cities output)

Returns available units, buildings, and districts with production costs.
Call this when a city finishes building or to decide what to produce next.
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description confirms a read-only operation (matching readOnlyHint=true) and details the return content: 'available units, buildings, and districts with production costs.' No contradictions.

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

Conciseness5/5

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

Two sentences and one argument list, no wasted words. Front-loads the core action and follows with a helpful usage note.

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?

Given low complexity (1 param), readOnly annotation, and presence of output schema, the description adequately covers purpose, usage, and return data. Could briefly mention cost details or constraints, but sufficient.

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

Parameters4/5

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

The input schema lacks parameter descriptions (0% coverage), but the description adds 'city_id: City ID (from get_cities output),' providing source and type info beyond the schema.

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 uses the verb 'List' and specifies the resource 'what a city can produce right now.' This clearly distinguishes it from writing tools like set_city_production and listing tools like get_cities, which are siblings.

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

Usage Guidelines4/5

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

Explicitly states when to call: 'when a city finishes building or to decide what to produce next.' It also links city_id to get_cities output. No exclusions or alternatives are mentioned, but the guidance is clear.

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

get_city_statesA
Read-only

List known city-states with envoy counts and types.

Shows envoy tokens available, each city-state's type (Scientific,
Industrial, etc.), how many envoys you've sent, and who is suzerain.
Use send_envoy to send an envoy.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true. Description adds detail on the specific data shown (envoy counts, types, sent, suzerain) but does not disclose additional behavioral traits beyond reading.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then specific details. No wasted words, every sentence adds value.

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?

Tool has no parameters, annotations provide readOnlyHint, output schema exists, and description covers all necessary information about what the tool does and returns.

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

Parameters4/5

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

No input parameters, so description does not need to explain parameter usage. It adds value by describing the output fields, which is helpful given the tool's simplicity.

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?

Clear verb 'List' and resource 'city-states', with specific details on envoy counts, types, and suzerain status. Distinguishes from sibling tools like 'get_cities' and 'send_envoy'.

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

Usage Guidelines4/5

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

Explicitly advises to use 'send_envoy' for sending an envoy, providing context for when to use this listing tool versus an action tool. No exclusions mentioned but context is sufficient.

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

get_dedicationsA

Get current era age, available dedications, and active ones.

Shows era score thresholds, whether you're in a Golden/Dark/Normal age,
and lists available dedication choices with their bonuses.
Use choose_dedication to select one when required.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It describes the output but does not explicitly state safety or side-effect behavior. Acceptable but not comprehensive.

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

Conciseness5/5

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

Three concise sentences, front-loaded with main purpose, no fluff. Every sentence adds value.

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?

Given no parameters and an existing output schema, the description sufficiently explains the tool's return information: era age, dedications, bonuses, and links to the sibling tool.

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

Parameters4/5

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

No parameters, so baseline is 4. Description adds value by detailing what the output contains (era age, dedications, bonuses), which helps the agent understand the return value.

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?

Description clearly states it retrieves current era age, dedications, and bonuses. It explicitly distinguishes from sibling choose_dedication by mentioning that tool for selection.

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?

Provides explicit guidance: use this to view dedications, and 'Use choose_dedication to select one when required.'

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

get_diaryA
Read-only

Read diary entries for game memory.

Args:
    last_n: Number of most recent entries to return (default 5, max 50).
            Used when turn/from_turn/to_turn are not specified.
    turn: Return the single entry for this turn number.
    from_turn: Return entries from this turn onward (inclusive).
    to_turn: Return entries up to this turn (inclusive).

Auto-detects the current game from the live connection. Each game has
its own diary file (keyed by civ + random seed).

Call this at the start of a session or after context compaction to
restore strategic memory from previous turns.
ParametersJSON Schema
NameRequiredDescriptionDefault
last_nNo
turnNo
from_turnNo
to_turnNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, but the description adds valuable context: auto-detects current game, each game has its own diary file keyed by civ and random seed. This explains state isolation and persistence beyond what annotations provide.

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

Conciseness5/5

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

The description is concise (about 10 lines) and well-structured: single-line purpose, bulleted args, then contextual notes. Every sentence adds value; no redundancy.

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?

Given that an output schema exists (so return values are documented separately) and annotations confirm read-only behavior, the description covers all needed aspects: purpose, parameter semantics, usage context, and behavioral scoping (auto-detection, per-game). No gaps identified.

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 description coverage is 0%, so the description carries full burden. It thoroughly explains each parameter: last_n (default 5, max 50, used when turn/from_turn/to_turn not specified), turn, from_turn, to_turn. Defaults and usage conditions are clearly stated.

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 explicitly states 'Read diary entries for game memory', clearly identifying the verb (read) and resource (diary entries). This tool is unique among siblings; no other tool handles diary entries, so differentiation is inherent.

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

Usage Guidelines4/5

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

The description provides specific guidance: 'Call this at the start of a session or after context compaction to restore strategic memory from previous turns.' It also explains auto-detection and per-game scoping. However, it does not explicitly state when not to use this tool or compare it to alternatives, though none exist.

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

get_diplomacyA
Read-only

Get diplomatic status with all known civilizations.

Shows diplomatic state (Friendly/Neutral/Unfriendly), relationship modifiers with scores and reasons, grievances, delegations/embassies, and available diplomatic actions you can take. Also shows visible enemy city details (name, population, loyalty, walls).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true, and description adds detail on returned data (modifiers, grievances, cities) and mentions 'visible enemy city details', implying constraints on what is shown. No contradictions.

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

Conciseness5/5

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

Two sentences, no wasted words. Front-loaded with purpose, then specific details. Each sentence earns its place.

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?

For a read-only data retrieval tool with no parameters and an output schema, the description thoroughly covers what the tool returns, including limitations (visible cities). No gaps.

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

Parameters4/5

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

No parameters, so schema covers everything. Description adds value by explaining what the output contains, which is appropriate for a parameterless tool.

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?

Clear verb 'get' with specific resource 'diplomatic status with all known civilizations'. Lists what is shown (state, modifiers, grievances, etc.), distinguishing it from other get_* tools.

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

Usage Guidelines3/5

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

Describes what the tool does but no guidance on when to use over alternatives like get_pending_diplomacy or respond_to_diplomacy. Usage context is implied but not explicit.

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

get_district_advisorA
Read-only

Show best tiles to place a district with adjacency bonuses.

Args:
    city_id: City ID (from get_cities)
    district_type: e.g. DISTRICT_CAMPUS, DISTRICT_HOLY_SITE, DISTRICT_INDUSTRIAL_ZONE

Returns valid placement tiles ranked by adjacency bonus.
Use set_city_production with target_x/target_y to build the district.
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes
district_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so the description doesn't need to address side effects. It adds that the tool 'Returns valid placement tiles ranked by adjacency bonus', which is additional behavioral context beyond annotations.

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

Conciseness5/5

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

The description is concise, consisting of a single-sentence purpose followed by a clear Args section. No extraneous information, and the key action is front-loaded.

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?

Given the presence of an output schema, the description adequately explains the return value (ranked valid placements) and how to use the result (with set_city_production). It also mentions prerequisites (city_id from get_cities), making it complete for an AI agent.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by providing the source for city_id (from get_cities) and examples for district_type. This adds meaning beyond the bare schema.

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 clearly states the verb 'Show' and resource 'best tiles to place a district with adjacency bonuses'. It distinguishes from sibling tools like get_settle_advisor (cities) and get_wonder_advisor (wonders) by being specific to districts.

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

Usage Guidelines4/5

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

The description explains when to use the tool (to see best district placement) and what to do next (use set_city_production). It doesn't explicitly state when not to use it, but the context is clear.

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

get_empire_resourcesA
Read-only

Get a summary of all resources in and near your empire.

Shows owned resources (improved/unimproved) grouped by type, and unclaimed resources near your cities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true; description adds context about grouping by type and including unclaimed resources. No contradictions. Additional behavioral traits beyond annotations are disclosed.

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

Conciseness5/5

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

Two succinct sentences that convey the tool's purpose and the structure of its output. No unnecessary words.

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?

Given no parameters and an existing output schema, the description adequately explains what the tool returns: owned resources grouped by type and unclaimed resources near cities.

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

Parameters4/5

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

No parameters exist in the schema; baseline 4 applies. Description correctly provides no parameter details since none are needed.

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?

Clearly states the tool retrieves a summary of empire resources, specifying scope 'in and near your empire'. Distinct from sibling tools like get_cities or get_units.

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

Usage Guidelines3/5

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

Describes what it does but provides no explicit guidance on when to use it versus alternative tools like get_strategic_map or get_settle_advisor. Use case is implied but not directly stated.

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

get_game_overviewA
Read-only

Get a high-level summary of the current game state.

Returns turn number, civilization, yields (gold/science/culture/faith), current research and civic, and counts of cities and units. Call this first to orient yourself.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Read-only annotation is already provided; description reinforces this by describing a non-destructive summary. Adds value by detailing what information is returned, which annotations do not cover.

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

Conciseness5/5

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

Extremely concise: two sentences plus a bullet list. Every word adds value, no redundancy. Purpose is front-loaded.

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?

For a read-only tool with no parameters and an output schema (implied), description is fully sufficient. It explains return values and usage timing without missing details.

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

Parameters4/5

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

No parameters exist; schema coverage is 100% (empty). Baseline for zero parameters is 4, and description does not need to add parameter information.

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?

Description clearly states it provides a 'high-level summary of the current game state' and lists specific elements (turn number, civilization, yields, etc.). This distinguishes it from other get_* tools that focus on specific aspects.

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

Usage Guidelines4/5

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

Explicitly says 'Call this first to orient yourself,' providing clear context for when to use. Does not mention alternatives or when not to use, but the context is strong.

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

get_global_settle_advisorA
Read-only

Find the best settle locations across the entire revealed map.

Unlike get_settle_advisor (which searches near a specific settler),
this scans all revealed land for the top 10 settle candidates.
Use this when deciding WHERE to send a settler, not just where to settle.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations include readOnlyHint=true, indicating safe read operation. Description adds context: scans all revealed land for top 10 candidates, which is useful behavioral detail beyond the annotation.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, no wasted words. Efficiently conveys core function and differentiator.

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?

Tool has zero parameters and output schema exists (not shown but indicated). Description fully covers what the tool does, when to use it, and how it differs from a sibling. Complete for a simple read tool.

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

Parameters4/5

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

No parameters in schema (100% coverage), so description doesn't need parameter details. Baseline 4 is appropriate as description adds no parameter-specific info but is not required.

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?

Description uses specific verb 'Find' and resource 'best settle locations across the entire revealed map'. Clearly distinguishes from sibling get_settle_advisor by contrasting scope (global vs. near a settler).

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?

Explicitly states when to use: 'when deciding WHERE to send a settler, not just where to settle'. Names alternative tool and explains their difference, providing clear guidance.

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

get_governorsA
Read-only

Get governor status, appointed governors, and available types.

Shows governor points, currently appointed governors with assignments,
and governors available to appoint. Use appoint_governor to appoint one.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered. Description adds context about what information is returned but does not disclose additional behavioral traits (e.g., no state changes, no auth needs).

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

Conciseness5/5

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

Three concise sentences with no wasted words. Front-loaded with main action, then details, then reference to sibling.

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?

Output schema exists and description adequately describes return content (governor points, appointments, available types). No prerequisites or error conditions mentioned, but sufficient for a simple read-only tool.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. The description adds value by explaining what the output includes, but no parameter details are needed.

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?

Description uses specific verbs ('Get governor status') and resource ('governors'), clearly listing what is shown (points, appointed governors, available types). It distinguishes from sibling tools like appoint_governor.

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

Usage Guidelines4/5

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

Description implies when to use this tool (to view governors) and references appoint_governor as an alternative for appointing. However, it does not explicitly state when not to use it or other exclusions.

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

get_gp_advisorA

Show best cities to activate a Great Person, ranked by suitability.

Args:
    unit_index: The Great Person unit's index (from get_units output).

Lists all cities with the matching district (e.g., campuses for Great Scientists),
showing which ones the GP can activate on, distance, city yield, and great work
slot availability for cultural GPs.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, description carries burden. It discloses output details (matching district, distance, yield, great work slots) but does not mention preconditions (e.g., unit existence), side effects (none expected), or whether it's read-only. Adequate but not exhaustive.

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

Conciseness5/5

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

Two sentences plus an Args line, front-loaded with purpose. Every sentence adds value with no redundancy.

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?

Tool is simple with one parameter and an output schema. Description covers input source and output details. Could mention edge cases (no available cities) but overall sufficient.

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

Parameters4/5

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

Schema coverage is 0% (no schema descriptions), but the tool description explicitly explains the parameter: 'unit_index: The Great Person unit's index (from get_units output).' This adds meaning beyond the schema's type-only info.

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?

Description uses specific verb 'Show best cities' and resource 'Great Person activation', with ranking by suitability. Distinguishes from siblings like get_great_people (lists GPs) and get_settle_advisor (for settling cities).

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

Usage Guidelines4/5

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

Description implies usage by explaining the tool's function: listing cities with matching district and details. It provides context (e.g., campuses for scientists) but does not explicitly state when to use vs alternatives or when not to use.

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

get_great_peopleA
Read-only

See available Great People and recruitment progress.

Shows which Great People are available, their recruitment cost, and which civilization (if any) is recruiting them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already provide readOnlyHint=true. The description adds value by detailing what information is shown (availability, recruitment cost, recruiting civilization), which is beyond the annotations.

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

Conciseness5/5

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

Two concise sentences front-load the main purpose and then provide details. No wasted words.

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?

Given no parameters and existing output schema, the description is complete. It covers the key aspects of the tool's output.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. Baseline score of 4 is appropriate as there is no need for additional parameter semantics.

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 clearly states the tool shows available Great People and recruitment progress. It distinguishes from sibling action tools like recruit_great_person, patronize_great_person, and reject_great_person.

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

Usage Guidelines4/5

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

The description implies use for reading state before acting, but does not explicitly state when to use vs alternatives. Context from sibling tools makes it clear, but lacks explicit guidance.

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

get_map_areaA
Read-only

Get terrain info for tiles around a point.

Args:
    center_x: X coordinate of center tile
    center_y: Y coordinate of center tile
    radius: How many tiles out from center (default 2, max 4)
ParametersJSON Schema
NameRequiredDescriptionDefault
center_xYes
center_yYes
radiusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds parameter details (e.g., default radius, max) but no other behavioral traits like side effects or rate limits. It is adequate but not rich.

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

Conciseness5/5

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

The description is extremely concise: one purpose line followed by a list of parameter descriptions. Every sentence adds value without redundancy. Excellent structure.

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?

Given the simple tool and existence of an output schema, the description covers the input parameters well. However, it does not hint at the output structure beyond 'terrain info', leaving a minor gap for an agent to understand what exactly is returned.

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 description coverage is 0%, but the description provides detailed explanations for each parameter: 'X coordinate of center tile', 'Y coordinate', 'How many tiles out from center (default 2, max 4)'. This fully compensates for the lack of schema descriptions.

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 clearly states the tool's purpose: 'Get terrain info for tiles around a point.' It uses a specific verb and resource, distinguishing it from other get_* tools that target different game data.

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

Usage Guidelines3/5

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

The description implies usage when terrain info around a point is needed, but it does not provide explicit guidance on when to use this tool versus alternatives or any exclusions. No sibling differentiation is mentioned.

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

get_notificationsA
Read-only

Get all active game notifications.

Shows action-required items (need your decision) and informational notifications. Action-required items include which MCP tool to use to resolve them. Call this to check what needs attention without ending the turn.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds valuable context: notifications include action-required items that specify which MCP tool to resolve them. No contradictions.

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

Conciseness5/5

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

Three concise sentences, front-loaded with purpose, no wasted words. Efficiently communicates purpose, content, and usage.

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?

With no parameters and an output schema present, the description fully covers what the tool does, what it returns (two notification types), and when to use it.

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

Parameters4/5

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

No parameters exist (0 params, 100% coverage), so baseline is 4. Description adds no parameter info because none needed.

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 clearly states the tool 'Get all active game notifications' and distinguishes two types: action-required and informational. This provides a specific verb+resource and differentiates from numerous sibling get_* tools.

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

Usage Guidelines4/5

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

States 'Call this to check what needs attention without ending the turn', giving clear context for when to use. Does not explicitly exclude alternatives, but the purpose is specific enough.

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

get_pantheon_beliefsA
Read-only

Get pantheon status and available beliefs for selection.

Shows current pantheon (if any), faith balance, and all available
pantheon beliefs with their bonuses. Use choose_pantheon to found one.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true. The description reinforces this by stating it shows information, and adds detail on what is displayed (status, faith, beliefs with bonuses), going beyond annotations.

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

Conciseness5/5

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

Two sentences with no wasted words. Purpose is front-loaded, and the second sentence adds critical context and directs to sibling.

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?

With zero parameters and an output schema (implied), the description fully explains the tool's return values. It is complete for a read-only information tool.

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?

No parameters exist (schema coverage 100%), so description adds meaning by explaining the output. Baseline 4 is exceeded because it clearly describes what the tool returns.

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 clearly states the tool retrieves pantheon status and available beliefs, naming specific outputs (current pantheon, faith balance, beliefs with bonuses). It also distinguishes from sibling choose_pantheon.

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?

Explicitly advises to use this tool before choosing a pantheon and directs to choose_pantheon for founding, providing clear when-to-use and alternative.

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

get_pathing_estimateA
Read-only

Estimate how many turns a unit needs to reach a destination.

Args:
    unit_id: The unit's composite ID (from get_units output)
    target_x: Destination X coordinate
    target_y: Destination Y coordinate

Returns estimated turns, path length, and reachable tiles this turn.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes
target_xYes
target_yYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint annotation by stating what the tool returns (estimated turns, path length, reachable tiles). This helps the agent understand the output scope without relying solely on annotations.

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

Conciseness5/5

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

The description is concise with a one-line purpose and bullet-like argument list. Every sentence adds value, and the structure front-loads the core function efficiently.

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?

Given the tool has an output schema (as indicated by context), the description need not fully detail return values, but it mentions key outputs. The 3 required parameters are fully described, making the tool adequately complete for an AI agent to use correctly.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by explaining the meaning of each parameter: unit_id comes from get_units, target_x/y are coordinates. This adds semantic value beyond the schema's type and title fields.

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 uses the specific verb 'estimate' and clearly identifies the resource as unit pathing to a destination. It distinguishes itself from sibling tools that perform actions or retrieve different data, making the tool's purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies when to use (when needing path estimates for a unit), but does not explicitly state when not to use or provide alternatives among siblings. No exclusions or context beyond the basic purpose is given.

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

get_pending_diplomacyA
Read-only

Check for pending diplomacy encounters (e.g. first meeting with a civ).

Diplomacy encounters block turn progression. Call this if end_turn
reports the turn didn't advance. Returns any open sessions with their
dialogue text, visible buttons, and response guidance.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true (safe read). The description adds that returns open sessions with dialogue text, visible buttons, and response guidance, and notes that diplomacy encounters block turn progression. This provides useful context beyond annotations.

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

Conciseness5/5

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

Three concise sentences, front-loaded with purpose and a concrete example. Every sentence adds value with no redundancy.

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?

Given no parameters and presence of an output schema, the description covers purpose, usage condition, and return value. It is fully adequate for a simple tool.

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

Parameters4/5

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

No parameters; baseline score of 4 applies since the description adds no parameter info but none is needed.

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 clearly states the tool checks for pending diplomacy encounters that block turn progression, with an example (first meeting with a civ). It distinguishes from sibling tools like get_diplomacy and respond_to_diplomacy by specifying 'pending' and the blocking behavior.

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

Usage Guidelines4/5

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

Explicitly tells when to use: 'Call this if end_turn reports the turn didn't advance.' It implies not to use if turn advances normally, but does not list alternatives or explicit exclusions.

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

get_pending_tradesA
Read-only

Check for pending trade deal offers from other civilizations.

Shows what each civ is offering and what they want in return.
Use respond_to_trade to accept or reject.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description's 'Check' is consistent. It adds no additional behavioral insights beyond what annotations provide, such as potential side effects or authorization needs. No contradiction.

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

Conciseness5/5

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

The description is three sentences, starting with the core purpose, then detailing what it shows, and finally directing to a sibling tool. Every sentence is essential and concise.

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?

Given no parameters and an output schema (stated in context), the description adequately covers the tool's function without needing return value details. It explains the displayed information, making it complete for its complexity.

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

Parameters4/5

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

The input schema has zero parameters, and schema description coverage is 100% (vacuously). The description does not need to add parameter details. Baseline 4 is appropriate.

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 clearly states the verb 'Check' and resource 'pending trade deal offers from other civilizations,' distinguishing it from sibling tools like 'get_trade_options' or 'respond_to_trade.' It specifies the content shown (offers and demands).

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

Usage Guidelines4/5

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

The description instructs to use 'respond_to_trade' to accept or reject, providing a direct next step. However, it doesn't explicitly exclude alternatives or clarify when to use this over other trade-related tools like 'propose_trade' or 'get_trade_routes.'

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

get_policiesA
Read-only

Get current government, policy slots, and available policies.

Shows current government type, each policy slot with its type and current policy (if any), and all unlocked policies grouped by compatible slot type. Wildcard slots accept any policy type.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, and the description adds behavioral context about what is shown (government type, policy slots, wildcard slots). It doesn't mention auth, rate limits, or side effects, but the addition of specific content details is adequate.

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

Conciseness5/5

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

The description is two concise sentences: a clear overview followed by a detailed elaboration. No wasted words, front-loaded with key information.

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?

Given the presence of an output schema (not shown) and zero parameters, the description adequately explains the tool's output in general terms. It covers the key aspects of what the tool returns without needing to detail structure.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. The description does not need to add parameter semantics, and it handles this absence appropriately.

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

Purpose4/5

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

The description clearly states the tool retrieves current government, policy slots, and available policies, with details on what is shown. However, it does not explicitly differentiate from sibling tools like get_governors or set_policies, though the name and context make it clear.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Among siblings like set_policies or change_government, there is no indication that this is a read-only retrieval tool or when to prefer it over other get_* tools.

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

get_purchasable_tilesA
Read-only

List tiles a city can purchase with gold.

Args:
    city_id: City ID (from get_cities)

Shows cost, terrain, and resources for each purchasable tile.
Tiles with luxury/strategic resources are listed first.
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds value by disclosing that tiles with luxury/strategic resources are listed first, and that it shows cost, terrain, and resources. No contradictions.

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

Conciseness5/5

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

The description is concise (6 lines) with a clear purpose statement followed by an Args section. Every sentence adds necessary information with no redundancy.

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?

Given the tool's simplicity (1 param, no nested objects) and presence of an output schema, the description adequately covers purpose, parameter, and output details (cost, terrain, resources, ordering). Minor gap: no mention of potential empty results.

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

Parameters4/5

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

The single parameter 'city_id' is described with 'City ID (from get_cities)', adding source context. Schema coverage is 0%, so the description compensates well by explaining the parameter's purpose and output characteristics.

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 clearly states the tool's purpose: 'List tiles a city can purchase with gold.' This is a specific verb-resource combination that distinguishes it from siblings like 'purchase_tile' and 'get_cities'.

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

Usage Guidelines3/5

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

The description implies usage (to see purchasable tiles for a city) but does not explicitly state when to use this tool versus alternatives. No exclusions or when-not-to-use guidance is provided.

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

get_religion_beliefsA

Get religion founding status, available religions, and available beliefs.

Shows whether you've founded a religion, available religion types to choose,
and beliefs grouped by class (Follower, Founder, Enhancer, Worship).
Use found_religion to found a religion after your Great Prophet activates.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully discloses the tool's output: status, religions, and beliefs grouped by class. It implies no destructive side effects, which is adequate for a read-only data retrieval tool.

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

Conciseness5/5

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

Two concise sentences with a usage tip; every word adds value. Front-loaded with core purpose.

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?

Given zero parameters and an output schema, the description fully explains the tool's behavior and output structure, including belief classification and connection to found_religion.

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

Parameters4/5

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

No parameters; baseline 4 applies. Description adds meaning by detailing what is returned, compensating for the lack of parameters.

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?

Description clearly states it retrieves religion founding status, available religions, and beliefs grouped by class. Distinguishes from sibling tools like found_religion and get_pantheon_beliefs by focusing on status and availability.

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

Usage Guidelines4/5

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

Explicitly suggests using found_religion after Great Prophet activates, providing a clear use case. Does not exclude other scenarios but gives enough context for appropriate use.

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

get_religion_spreadA
Read-only

Get per-city religion breakdown across all visible cities.

Shows which religion is majority in each city, follower counts, and which religions are closest to religious victory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, and the description adds no contradictory or additional behavioral traits (e.g., side effects, permissions). The description is consistent but does not go beyond what annotations cover.

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

Conciseness5/5

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

Two sentences with no wasted words. First sentence states the action and scope, second sentence details key outputs. Structure is optimal for an AI agent's quick understanding.

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?

Given the tool's simplicity (no parameters, output schema exists), the description fully covers purpose and key outputs. No additional context is needed.

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

Parameters4/5

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

No parameters exist (schema coverage 100%), so baseline is 4. The description does not need to add parameter information and appropriately focuses on output details.

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?

Description uses specific verb 'Get' and clearly defines the resource 'per-city religion breakdown across all visible cities'. It details the output: majority religion, follower counts, and religious victory proximity, distinguishing it from siblings like get_religion_beliefs.

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

Usage Guidelines3/5

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

The description implies usage for viewing religion spread but does not explicitly state when to use this tool versus alternatives (e.g., get_religion_beliefs, get_victory_progress). No exclusions or recommendations are provided, leaving usage inferred.

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

get_settle_advisorA
Read-only

List best settle locations near a settler unit.

Args:
    unit_id: The settler's composite ID (from get_units output)

Scores locations by yields, water, defense, and resource value.
Returns top 5 candidates sorted by score.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, so no safety ambiguity. Description adds behavioral details: scores by yields, water, defense, and resource value; returns top 5 sorted. No contradictions.

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

Conciseness5/5

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

Description is concise, front-loaded with the main purpose. Four sentences total, each adding value: purpose, argument, scoring criteria, and return format. No wasted words.

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?

For a simple tool with one parameter and existing output schema, the description covers parameter and return format adequately. Could mention edge cases like no valid locations, but overall sufficient.

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 0%, so description must compensate. It explains unit_id as 'The settler's composite ID (from get_units output)', giving clear semantic meaning beyond the schema's type declaration.

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?

Clearly states the tool lists best settle locations near a settler unit. The verb 'list' and resource 'settle locations' are specific. It distinguishes from sibling get_global_settle_advisor by implying per-unit scope.

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

Usage Guidelines4/5

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

Provides clear context: use when you have a specific settler unit and need local settle advice. It tells how to obtain the unit_id from get_units output. Does not explicitly exclude alternatives, but the context is clear.

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

get_spiesA
Read-only

List all your spy units with position, rank, city, and available missions.

Shows each spy's composite id (needed for spy_action), current location,
rank (Recruit/Agent/Special Agent/Senior Agent), XP, and which operations
are available at their current position.

Note: offensive missions only become available once the spy has physically
arrived in the target city. Use spy_action with action='travel' first.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Adds context beyond readOnlyHint annotation: describes output fields and the condition for offensive missions being available. No contradiction with annotations.

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

Conciseness5/5

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

Two short paragraphs with front-loaded purpose and clear structure. Every sentence adds value with no redundancy.

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?

Fully explains what the tool returns and includes a key usage note. Given zero parameters and existence of output schema, description is complete.

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

Parameters4/5

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

No parameters, so schema coverage is 100%. Baseline of 4 applies; description does not need to add parameter info.

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?

Description clearly states it lists spy units with specific attributes (position, rank, city, missions). It distinguishes from sibling tool spy_action by mentioning the composite id is needed for actions.

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?

Provides explicit guidance on when to use this tool vs spy_action, including a prerequisite note that offensive missions require prior travel via spy_action.

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

get_strategic_mapA
Read-only

Get fog-of-war boundaries and unclaimed resources across the map.

Shows how far explored territory extends from each city (in 6 directions), highlighting directions that need exploration. Also lists unclaimed luxury and strategic resources on revealed but unowned land.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

ReadOnlyHint annotation already signals safety; description adds specific behavioral details about what is shown (boundaries in 6 directions, unclaimed resources) beyond annotations.

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

Conciseness5/5

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

Two concise sentences, front-loaded with key information, no redundant text.

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?

Despite no output schema provided, the description sufficiently explains what is returned for a simple query tool with no parameters.

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

Parameters4/5

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

No parameters; schema coverage is 100%, description adds no param info (unnecessary). Baseline 4 for 0 parameters.

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?

Description clearly states it retrieves fog-of-war boundaries and unclaimed resources, distinguishing it from other get_ tools by specifying the exact information provided.

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

Usage Guidelines4/5

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

Implies use when exploring or needing map coverage info, but does not explicitly differentiate from siblings like get_map_area or get_settle_advisor.

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

get_tech_civicsA
Read-only

Get technology and civic research status.

Shows current research, current civic, turns remaining, and lists of available technologies and civics to choose from.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint annotation by detailing what information is returned (current research, civic, turns, lists). No side effects or restrictions are noted, but none are expected for a read-only operation.

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

Conciseness5/5

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

The description is extremely concise with two sentences. The first sentence provides the tool's purpose, and the second elaborates on the output. No extraneous information is present.

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?

Given the tool's simplicity (no parameters, output schema present), the description fully covers what the tool does. It explains the output content, which is sufficient for an agent to understand the tool's utility.

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

Parameters4/5

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

There are no parameters, and the schema coverage is 100%. The description does not need to add parameter details, achieving a baseline of 4 as per the rubric for zero-parameter tools.

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 clearly states the tool retrieves technology and civic research status, including current research/civic, turns remaining, and available options. It effectively distinguishes from sibling tools like set_research or get_policies.

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

Usage Guidelines4/5

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

The description provides clear context for when to use (to view tech/civic status). However, it does not explicitly state when not to use or mention alternative tools, though the absence of parameters makes it straightforward.

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

get_trade_destinationsA
Read-only

List valid trade route destinations for a trader unit.

Args:
    unit_id: The trader's composite ID (from get_units output)

Shows domestic and international destinations. Use unit_action
with action='trade_route' and target_x/target_y to start a route.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and description confirms read-only nature. Adds context that unit_id comes from get_units output, aiding usage.

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

Conciseness5/5

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

Five concise sentences with no fluff, front-loaded with purpose.

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?

Given low complexity, one parameter, and existing output schema, the description sufficiently covers input, functionality, and next steps.

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?

The single parameter unit_id is explained as the trader's composite ID from get_units output, fully compensating for zero schema description 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?

Clearly states the tool lists valid trade destinations for a trader unit, distinguishing from siblings like get_trade_routes and unit_action.

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

Usage Guidelines4/5

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

Provides context that this is a preparatory step before using unit_action to start a route, and clarifies that destinations include both domestic and international. Lacks explicit comparison to other trade-related tools.

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

get_trade_optionsA
Read-only

See what both sides can trade — like opening the trade screen.

Args:
    other_player_id: The player ID (from get_diplomacy output)

Shows gold, resources, favor, open borders status, and alliance eligibility
for both you and the other civilization. Use before propose_trade to see
what's available.
ParametersJSON Schema
NameRequiredDescriptionDefault
other_player_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

The description adds behavioral context beyond the readOnlyHint annotation by listing what is shown (gold, resources, favor, open borders status, alliance eligibility). There is no contradiction with annotations, and it clearly indicates a safe read operation.

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

Conciseness5/5

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

The description is extremely concise, front-loading the core purpose in the first sentence, then efficiently covering the argument and usage. Every sentence is necessary and adds value.

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?

For a tool with one simple parameter, a readOnly annotation, and an explicit output schema, the description fully covers what the agent needs to know: what it does, what it requires, and when to use it.

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?

The schema has one parameter with no description (0% coverage), but the description compensates fully by explaining the parameter's origin ('The player ID (from get_diplomacy output)'), adding meaning beyond the schema.

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 clearly states the tool's purpose with a specific verb ('See what both sides can trade') and analogizes to 'like opening the trade screen.' It distinguishes from the sibling tool 'propose_trade' by mentioning it should be used before that.

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

Usage Guidelines4/5

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

It provides explicit guidance on when to use the tool ('Use before propose_trade') and where to get the required argument ('from get_diplomacy output'). However, it does not specify when not to use it or mention alternatives beyond the single sibling.

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

get_trade_routesA
Read-only

Get trade route capacity, active routes, and trader status.

Shows how many routes are active vs capacity, and lists all trader units with their positions and whether they're idle or on a route.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so description carries less burden. The description adds valuable context: it shows capacity, active routes, and lists trader units with positions and idle status. This goes beyond what annotations provide.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the purpose and then details the output. Every sentence earns its place.

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?

Given zero parameters and an output schema exists (not shown), the description fully explains the return content: capacity, active routes, and trader list with status. No gaps.

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

Parameters4/5

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

No parameters exist (schema has no properties, coverage 100%). The description does not need to add parameter info. It appropriately focuses on what the tool returns.

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?

Description clearly states what the tool does: 'Get trade route capacity, active routes, and trader status.' It uses a specific verb ('Get') and resource ('trade routes'), and distinguishes itself from siblings like get_trade_destinations and get_trade_options which have different purposes.

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

Usage Guidelines3/5

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

The description implies usage for retrieving trade route information but provides no explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusions or context are mentioned.

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

get_unit_promotionsA
Read-only

List available promotions for a unit.

Args:
    unit_id: The unit's composite ID (from get_units output)

Shows promotions filtered by the unit's promotion class.
Only units with enough XP will have promotions available.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds behavioral info about filtering by promotion class and XP requirement, going beyond annotations without contradiction.

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

Conciseness5/5

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

Two sentences plus an Args line, all essential information front-loaded (purpose in first sentence). No unnecessary words or repetition.

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?

Covers purpose, parameter origin, filtering conditions, and prerequisites (XP). With an output schema provided, return values are covered externally. The description is fully sufficient for an agent to use this tool correctly.

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?

The description explains the single parameter unit_id as 'The unit's composite ID (from get_units output)', adding essential context beyond the schema's type and title, especially with 0% schema description 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 clearly states 'List available promotions for a unit' with a specific verb ('List') and resource ('available promotions for a unit'), distinguishing it from sibling tools like promote_unit which applies a promotion.

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

Usage Guidelines4/5

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

Provides clear usage context: it lists promotions filtered by promotion class and only for units with enough XP. However, it does not explicitly contrast with sibling tools like promote_unit or when not to use.

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

get_unitsA
Read-only

List all your units with position, type, movement, and health.

Each unit shows its id and idx (needed for action commands). Consumed units (e.g. settlers that founded cities) are excluded.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint annotation by specifying that consumed units are excluded from the list. It does not contradict annotations and provides useful detail about the output scope.

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

Conciseness5/5

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

The description is extremely concise with two sentences. The first sentence states the purpose and included fields, and the second adds critical detail about excluded units and the importance of id/idx. No unnecessary words.

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?

Given the tool's simplicity (no parameters) and the existence of an output schema, the description is complete. It explains what fields are shown and what is excluded, which is sufficient for an agent to understand the tool's return value.

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

Parameters4/5

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

With zero parameters and schema coverage 100%, the baseline score is 4. The description adds no parameter-specific meaning because there are none, but it provides context about the output.

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 clearly states the verb 'list all your units' and specifies the resource (units) along with what information is included (position, type, movement, health) and excluded (consumed units). It distinguishes itself from sibling tools by focusing on general unit listing.

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

Usage Guidelines3/5

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

The description implies usage for listing units but does not provide explicit guidance on when to use this tool versus alternatives like get_builder_tasks or unit_action. No 'when not to use' or alternative suggestions are given.

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

get_victory_progressA
Read-only

Get victory condition progress for all civilizations.

Shows progress toward Science, Domination, Culture, Religious, Diplomatic, and Score victories. Includes space race VP, diplomatic VP, tourism vs domestic tourists, religion spread, capital ownership, and military strength. Call every 20-30 turns to track the race.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true. Description adds valuable behavioral context by listing specific data points included (space race VP, diplomatic VP, etc.), which goes beyond the annotation. No contradictions.

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

Conciseness5/5

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

Three sentences, each clearly front-loaded: purpose in first, details in second, usage frequency in third. No wasted words.

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?

With no parameters, read-only annotation, and output schema expected, the description covers all necessary information: what data is included and how often to use. Complete for a simple polling tool.

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

Parameters4/5

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

No parameters exist (0), so description cannot add meaning beyond schema. Baseline 4 applies per guidelines since there's nothing to explain.

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?

Description clearly states 'Get victory condition progress for all civilizations' with specific verb and resource. Lists included victory types, distinguishing it from other 'get_*' sibling tools that focus on different aspects of the game.

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

Usage Guidelines4/5

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

Explicit guidance to 'Call every 20-30 turns to track the race.' While no alternatives or when-not-to-use are mentioned, the simple nature and specific timing advice provide clear usage context.

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

get_wonder_advisorA
Read-only

Show best tiles to place a wonder with displacement cost analysis.

Args:
    city_id: City ID (from get_cities output)
    wonder_name: Wonder building type, e.g. BUILDING_CHICHEN_ITZA, BUILDING_ORSZAGHAZ

Returns valid placement tiles ranked by displacement cost (lowest = best):
tiles with no improvements or resources are preferred over productive tiles.
Also shows terrain, feature, river/coastal status, and any resources/improvements
that would be removed by placing the wonder there.
Use set_city_production with target_x/target_y to build the wonder.
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes
wonder_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses beyond the readOnlyHint annotation by explaining the output includes ranked tiles, displacement cost, terrain, and resources to be removed. It accurately reflects the read-only nature and provides meaningful behavioral detail.

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?

The description is well-structured with a summary, Args section, Returns section, and a usage tip. It's somewhat lengthy but every sentence adds value, and the structure aids readability.

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?

Given the tool's complexity (2 parameters, detailed output) and the existence of an output schema, the description is very complete. It explains inputs, output contents, and usage context, leaving no ambiguity about what the tool does and how to use it.

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

Parameters4/5

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

Despite 0% schema parameter descriptions, the tool's description adds significant meaning: it specifies that city_id comes from get_cities output, and gives example values for wonder_name (e.g., BUILDING_CHICHEN_ITZA). This compensates well for the schema's lack of descriptions.

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 clearly states the tool's purpose: 'Show best tiles to place a wonder with displacement cost analysis.' It uses specific verbs and resources, and distinguishes itself from sibling tools like get_settle_advisor and get_district_advisor by focusing specifically on wonder placement.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (when placing a wonder) and even advises the next step: 'Use set_city_production with target_x/target_y to build the wonder.' While it doesn't explicitly state alternatives or when not to use, the context is sufficient.

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

get_world_congressA
Read-only

Get World Congress status, active resolutions, and voting options.

Shows whether congress is in session, resolutions to vote on (with options A/B
and possible targets), turns until next session, and your diplomatic favor.
When in session, use queue_wc_votes to register votes before end_turn.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

The description fully aligns with the readOnlyHint annotation, confirming a no-side-effect read operation. It adds specific details on what data is returned, enhancing understanding beyond the annotation.

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

Conciseness5/5

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

Two concise sentences front-load the main purpose and add relevant usage context. No extraneous words.

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?

Given an output schema exists, the description sufficiently covers key return fields. It provides all necessary context for a status-check tool.

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

Parameters4/5

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

No parameters exist, so the description naturally adds no param info. With zero parameters, baseline is 4; no improvement needed.

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 clearly states it retrieves World Congress status, active resolutions, and voting options, and lists specific fields like session state, resolutions with options, turns until next session, and diplomatic favor. This distinguishes it from sibling tools, which focus on other game aspects.

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?

Explicitly advises using 'queue_wc_votes' when congress is in session to register votes, providing clear when-to-use and when-not-to-use guidance. No exclusions needed.

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

kill_gameA
Destructive

Kill the Civ 6 game process and wait for Steam to deregister.

Only kills Civ 6 processes. Waits ~10 seconds for Steam to deregister
so the game can be relaunched cleanly.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide destructiveHint=true. Description adds that it waits for Steam deregister, which is useful behavioral context. Does not mention potential side effects like losing unsaved progress.

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

Conciseness5/5

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

Two sentences, front-loaded, no unnecessary words. Efficiently communicates purpose and key behavior.

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 parameters and an output schema present, the description covers the essential action and waiting behavior. Could mention idempotency or safety but not required.

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

Parameters4/5

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

No parameters exist, so description does not need to add parameter info. Baseline 4 for zero-parameter tools.

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?

Clearly states the action (kill) and specific resource (Civ 6 game process) with additional behavior (wait for Steam deregister). Distinct from sibling tools which are in-game actions.

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

Usage Guidelines3/5

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

Implies usage as a process termination tool but provides no explicit when-to-use or alternatives. The constraint 'Only kills Civ 6 processes' is a restriction but not a guideline.

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

launch_gameA
Destructive

Launch Civ 6 via Steam.

Starts the game and waits for the process to appear (~15-30 seconds).
The game will be at the main menu after launch — use load_save or
restart_and_load to load a specific save.

NOTE: FireTuner connection is NOT available at the main menu.
Only in-game MCP tools work after a save is loaded.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds valuable behavioral details: the startup wait period, the fact that the game ends at the main menu, and the limitation that FireTuner (and thus in-game tools) only work after a save is loaded. No contradiction with annotations.

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

Conciseness5/5

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

Extremely concise: two sentences and a note. Every sentence provides critical information (action, behavior, limitations). Front-loaded with the main purpose. No redundant or extraneous content.

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?

For a zero-parameter tool with an output schema (implied but not shown), the description covers all necessary context: what it does, how it behaves (wait time), what state the game is in after launch, and what tools work afterwards. Sibling tools are hinted at, providing sufficient completeness.

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

Parameters4/5

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

The tool has 0 parameters, so the schema is fully described (100% coverage). The description adds no parameter info, which is acceptable; baseline for 0 params is 4. No additional semantic explanation needed.

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 explicitly states the tool launches Civ 6 via Steam. It uses a specific verb ('Launch') and resource ('Civ 6'), distinguishing it from sibling tools like load_save and restart_and_load, which are mentioned as after-launch actions.

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?

Provides clear when-to-use context (launching the game) and explicitly states that FireTuner is not available at the main menu, directing users to use load_save or restart_and_load instead. Also mentions expected wait time (~15-30 seconds), guiding agent expectations.

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

list_savesA
Read-only

List available save files (normal, autosave).

Returns indexed list of saves. Use load_save(save_index=N) to load one.
Call this before load_save to see what's available.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, which the description reinforces. The description adds that it returns an indexed list, which is helpful. No contradictions.

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

Conciseness5/5

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

Three sentences, each providing essential information: what it does, what it returns, and how to use it. No wasted words.

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?

The tool has no parameters, an output schema exists, and the description fully conveys its purpose and usage. It is complete for the agent's needs.

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

Parameters4/5

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

No parameters exist, so the description does not need to explain them. Baseline 4 is appropriate.

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 clearly states it lists save files (normal, autosave) and returns an indexed list. It distinguishes itself from the sibling 'load_save' by indicating that after listing, one should use load_save with an index.

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

Usage Guidelines4/5

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

Explicitly advises to call this before load_save to see available saves. However, it does not mention conditions where listing might not be needed or alternative tools for different save operations.

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

load_game_saveA
Destructive

Load a save file by name. No need to call list_saves first.

Args:
    save_name: Save name without extension (e.g. "0_MCP_0079",
               "0A_GROUND_CONTROL", "AutoSave_0221", "quicksave").

Tries Lua-based loading first (fast, ~5s). If the save isn't found
via Lua (common for autosaves/quicksaves), falls back to OCR menu
navigation (~90s) after verifying the file exists on disk.
ParametersJSON Schema
NameRequiredDescriptionDefault
save_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Adds significant behavioral information beyond the destructiveHint annotation: details on Lua vs OCR loading, time estimates, and file existence check. No contradiction with annotations.

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

Conciseness5/5

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

Extremely concise: three short sentences and a bulleted example. Every piece is informative with no fluff. Structure is front-loaded with purpose and usage note.

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?

Missing explicit differentiation from load_save and load_save_from_menu siblings, but output schema exists covering return values. For a simple load tool with one parameter, it is mostly complete.

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?

The schema has 0% description coverage for the parameter, but the description provides examples of valid save names and explains that the extension should be omitted. This adds critical meaning.

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 clearly states 'Load a save file by name' with specific verb and resource. It distinguishes from siblings like list_saves and implicitly from other load variants by explaining behavior.

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

Usage Guidelines4/5

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

Provides guidance that list_saves is not required first, and explains fallback behavior. Does not explicitly state when to avoid this tool or compare to other load tools like load_save_from_menu, but context is clear.

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

load_saveA
Destructive

Load a save file by index from the most recent list_saves() result.

Args:
    save_index: Index number from list_saves output (1-based)

The game will reload entirely. Wait ~10 seconds after calling this,
then use get_game_overview to verify the loaded state.
ParametersJSON Schema
NameRequiredDescriptionDefault
save_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Annotations include destructiveHint=true. Description adds valuable behavioral context: 'The game will reload entirely' and a warning about waiting 10 seconds, which goes beyond the annotation to inform the agent of side effects.

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

Conciseness5/5

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

The description is extremely concise: two short paragraphs, each sentence adds essential information. No fluff or repetition.

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?

Given the tool is destructive (load game), has one parameter, and output schema exists (assumed to document returns), the description covers input semantics, side effects, and recommended follow-up action. Complete for safe invocation.

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?

The schema has 0% description coverage for the single parameter 'save_index'. The description fully compensates by explaining it is 'Index number from list_saves output (1-based)', giving clear meaning and source.

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 explicitly states 'Load a save file by index from the most recent list_saves() result.' It uses a specific verb and resource, and distinguishes from sibling tools like load_game_save and load_save_from_menu by specifying the source.

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?

The description provides clear when-to-use (after list_saves) and post-usage guidance ('wait ~10 seconds, then use get_game_overview to verify'). It also explains the parameter format (1-based index).

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

load_save_from_menuA
Destructive

Navigate the main menu to load a save via OCR-guided clicking.

Args:
    save_name: Autosave name (e.g. "AutoSave_0221"). If not provided,
               loads the most recent autosave.

Requires the game to be running and at the main menu. Uses macOS Vision
OCR to find and click menu elements. Takes 30-90 seconds.

After loading, wait ~10 seconds then call get_game_overview to verify.

Requires pyobjc: uv pip install 'civ6-mcp[launcher]'
ParametersJSON Schema
NameRequiredDescriptionDefault
save_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Discloses OCR-based clicking, duration, and required state. The annotation destructiveHint=true aligns with loading a save (state change). Adds value beyond annotations by detailing method and post-load steps.

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

Conciseness5/5

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

Three short paragraphs: purpose/parameter, requirements/timing, post-condition. Every sentence adds useful information without redundancy.

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?

Covers prerequisites, parameter, timing, and verification step. With an output schema present, return value details are not needed. Could mention error handling but overall complete for a load tool.

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?

The single parameter 'save_name' is explained with a concrete example ('AutoSave_0221') and behavior when omitted ('loads the most recent autosave'). Schema coverage is 0%, so the description fully compensates.

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 clearly states the action ('Navigate the main menu to load a save via OCR-guided clicking'), specifying the method (OCR) and context (main menu). It distinguishes from sibling tools like 'load_game_save' and 'restart_and_load' by focusing on menu-based OCR loading.

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

Usage Guidelines4/5

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

Provides explicit prerequisites ('Requires the game to be running and at the main menu'), timing expectations (30-90 seconds), and a recommended follow-up action (call get_game_overview). Missing explicit when-not-to-use guidance but still offers clear context.

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

patronize_great_personA

Buy a Great Person instantly with gold or faith.

Args:
    individual_id: The individual's ID (from get_great_people output)
    yield_type: YIELD_GOLD (default) or YIELD_FAITH

Costs shown in get_great_people output under "Patronize:".
Requires enough gold/faith to cover the cost.
ParametersJSON Schema
NameRequiredDescriptionDefault
individual_idYes
yield_typeNoYIELD_GOLD

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It reveals the purchase nature, required resource, and parameter sources, but omits potential side effects, irreversibility, or failure conditions, which is insufficient for full transparency.

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

Conciseness5/5

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

The description is three sentences, directly stating the action, listing arguments, and noting prerequisites. No fluff or repetition; each sentence adds value.

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?

Given the simple tool (2 params, no nested objects) and presence of an output schema, the description covers all essential aspects: what it does, how to call it, and resource requirements. No gaps remain.

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

Parameters4/5

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

Despite 0% schema coverage, the description explains both parameters: individual_id comes from get_great_people, and yield_type defaults to YIELD_GOLD with alternative YIELD_FAITH. This adds significant meaning beyond the schema's bare types.

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

Purpose4/5

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

The description clearly states the tool buys a Great Person instantly with gold or faith, using a specific verb and resource. It distinguishes from sibling tools like 'recruit_great_person' by its action, though it does not explicitly differentiate.

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

Usage Guidelines3/5

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

The description provides prerequisites (cost from get_great_people, sufficient gold/faith) and references a sibling tool for cost info. However, it lacks explicit when-not-to-use guidance or alternatives, leaving usage context somewhat implied.

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

promote_governorB

Promote a governor with a new ability.

Args:
    governor_type: The governor type (from get_governors output)
    promotion_type: The promotion type (from get_governors output, shown under each governor)

Requires available governor points. Use get_governors to see available promotions.
ParametersJSON Schema
NameRequiredDescriptionDefault
governor_typeYes
promotion_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions requiring governor points but does not explain whether the promotion modifies the governor state, is reversible, or has other side effects. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is brief (3 sentences) and front-loaded with the purpose. Every sentence adds value, though the 'Args' section could be integrated more naturally.

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

Completeness3/5

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

For a simple tool with two parameters and an output schema, the description covers purpose, parameter sources, and a prerequisite. However, it lacks behavioral details and return value explanation, making it adequate but not complete.

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?

The description explains that both parameters (governor_type and promotion_type) come from get_governors output, adding meaning beyond the bare schema names. With 0% schema description coverage, this guidance is helpful but could be more detailed (e.g., format or examples).

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

Purpose4/5

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

The description clearly states the action ('Promote a governor with a new ability'), specifying the resource (governor) and the operation (promotion). It distinguishes from sibling tools like promote_unit or appoint_governor, though it could explicitly differentiate from other governor-related tools.

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

Usage Guidelines4/5

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

The description provides context on when to use the tool: after checking available promotions via get_governors, and notes the requirement of governor points. However, it does not explicitly mention when not to use this tool or provide alternatives.

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

promote_unitA

Apply a promotion to a unit.

Args:
    unit_id: The unit's composite ID (from get_units output)
    promotion_type: e.g. PROMOTION_BATTLECRY, PROMOTION_TORTOISE

Use get_unit_promotions first to see available options.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes
promotion_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states the action 'Apply' without describing side effects, reversibility, permissions, or other behavioral traits. This lack of context beyond the action itself leaves the agent unaware of potential consequences.

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

Conciseness5/5

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

The description is extremely concise, using a single sentence for the purpose and a short list for arguments. Every sentence provides value: the first states the action, the second explains parameters, and the third gives usage guidance. No redundant words or filler.

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?

Given the tool has only two parameters, no nested objects, and an output schema (which reduces the need to describe return values), the description is largely complete. It covers the purpose, parameter details, and prerequisite tool. However, it could mention that this is a mutation (state-changing) operation.

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

Parameters4/5

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

The input schema provides zero description for parameters (0% coverage), but the description explicitly explains that 'unit_id' is a composite ID from 'get_units' output and provides two examples for 'promotion_type' (e.g., PROMOTION_BATTLECRY, PROMOTION_TORTOISE). This adds essential meaning beyond the schema, compensating well for the lack of schema descriptions.

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 clearly states 'Apply a promotion to a unit.' Using a specific verb ('Apply') and resource ('promotion to a unit'), it precisely defines the tool's action. It distinguishes from siblings like 'promote_governor' by the context of units and references the prerequisite 'get_unit_promotions'.

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

Usage Guidelines4/5

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

The instruction 'Use get_unit_promotions first to see available options' provides clear guidance on the prerequisite step for using this tool. This tells the agent when to use it (after checking options) but does not explicitly state when not to use it or list alternatives beyond the implied get_unit_promotions.

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

propose_peaceA

Propose white peace to a civilization you're at war with.

Args:
    other_player_id: The player ID (from get_diplomacy output)

Requires being at war and past the 10-turn war cooldown.
The AI may accept or reject based on war score and relationship.
ParametersJSON Schema
NameRequiredDescriptionDefault
other_player_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that the AI may accept or reject based on war score and relationship. However, it does not detail what happens on success (e.g., immediate peace) or failure, leaving some behavioral ambiguity.

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?

The description is concise, with only 3 sentences plus an Args line. It is front-loaded with the main purpose. Minor improvement could be more structured formatting, but overall efficient.

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?

Given the presence of an output schema (not shown), the description covers preconditions and the uncertain outcome. It lacks details on the exact response format or error cases, but for a simple diplomacy action it is adequate.

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

Parameters4/5

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

The description explains the parameter `other_player_id` and where to obtain it (from get_diplomacy output), adding value beyond the schema which lacks a description. Schema description coverage is 0%, but the description compensates well.

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 clearly states the verb 'propose' and the resource 'white peace' to a specific target (civilization at war). It distinguishes itself from sibling tools like form_alliance and respond_to_diplomacy by specifying the exact diplomatic action.

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

Usage Guidelines4/5

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

The description explicitly states the prerequisites: being at war and past the 10-turn war cooldown. It does not mention alternatives or when not to use, but the context is clear enough for an agent to decide.

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

propose_tradeA

Propose a trade deal to another civilization.

Args:
    other_player_id: The player ID (from get_diplomacy output)
    offer_gold: Lump sum gold to give them
    offer_gold_per_turn: Gold per turn to give them (30-turn duration)
    offer_resources: Comma-separated resource types to offer, e.g. "RESOURCE_SILK,RESOURCE_TEA"
    offer_favor: Diplomatic favor to offer
    offer_open_borders: True to offer our open borders
    request_gold: Lump sum gold to request from them
    request_gold_per_turn: Gold per turn to request (30-turn duration)
    request_resources: Comma-separated resource types to request
    request_favor: Diplomatic favor to request from them
    request_open_borders: True to request their open borders
    joint_war_target: Player ID of a third civ to declare joint war against
    mode: "send" to commit the deal, "test" to preview AI's counter-offer without committing

Examples: Gift 100 gold: offer_gold=100. Trade silk for 3 gpt: offer_resources="RESOURCE_SILK", request_gold_per_turn=3.
Mutual open borders: offer_open_borders=True, request_open_borders=True.
Test a deal first: mode="test" to see what the AI thinks is fair, then mode="send" to commit.
ParametersJSON Schema
NameRequiredDescriptionDefault
other_player_idYes
offer_goldNo
offer_gold_per_turnNo
offer_resourcesNo
offer_favorNo
offer_open_bordersNo
request_goldNo
request_gold_per_turnNo
request_resourcesNo
request_favorNo
request_open_bordersNo
joint_war_targetNo
modeNosend

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, description explains mode effects (test previews counter-offer, send commits) and duration of gold per turn (30 turns). Does not address rejection behavior or permissions, but adds value beyond default schema.

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?

Description is thorough but not overly verbose. Parameter list and examples are well-structured. Could be slightly more concise, but no wasted content.

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 13 parameters and 0% schema coverage, description covers all parameters and usage patterns. Does not explain output schema, but its presence reduces need. Lacks details on possible side effects of joint war or rejection.

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 0%, so description carries full burden. It explains each parameter's meaning and provides examples, significantly enhancing the minimal schema titles.

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 clearly states 'Propose a trade deal to another civilization,' with a specific verb and resource. It distinguishes from siblings like respond_to_trade and propose_peace by focusing on initiating a trade proposal.

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

Usage Guidelines4/5

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

Examples illustrate when to use (gift, trade, mutual open borders) and the mode parameter (test to preview, send to commit). No explicit when-not-to-use, but usage context is clear.

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

purchase_itemA

Purchase a unit or building instantly with gold or faith.

Args:
    city_id: City ID (from get_cities output)
    item_type: UNIT or BUILDING
    item_name: e.g. UNIT_WARRIOR, BUILDING_MONUMENT
    yield_type: YIELD_GOLD (default) or YIELD_FAITH

Costs gold/faith immediately. Use get_city_production to see what's available.
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes
item_typeYes
item_nameYes
yield_typeNoYIELD_GOLD

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool 'costs gold/faith immediately,' indicating a resource cost and immediate effect. However, it does not mention potential errors (e.g., insufficient funds) or whether the action is reversible.

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

Conciseness5/5

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

The description is very concise, using a single sentence for the main purpose followed by a bulleted list of parameters. Every sentence is necessary, and the structure is front-loaded with the core functionality. No wasted words.

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?

Given the output schema exists (context signals indicate true), the description does not need to explain return values. It covers the tool's action, parameters, and a useful prerequisite. It lacks error handling or success feedback, but for a straightforward purchase tool, this is adequate.

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?

The description explains all four parameters with clear meanings, data sources (e.g., 'from get_cities output'), and examples. This significantly adds value beyond the schema, which has no descriptions and 0% coverage. The parameter documentation is thorough and actionable.

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 states 'Purchase a unit or building instantly with gold or faith,' which is a specific verb+resource combination. It clearly distinguishes the tool's purpose from siblings by focusing on instant purchase, and mentions a related tool (get_city_production) for prerequisites.

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

Usage Guidelines4/5

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

The description provides guidance on when to use by directing users to get_city_production to see available items. It implies a prerequisite but does not explicitly exclude alternatives like city_action, which could also handle purchases indirectly.

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

purchase_tileA

Buy a tile for a city with gold.

Args:
    city_id: City ID
    x: Tile X coordinate
    y: Tile Y coordinate

Use get_purchasable_tiles first to see costs and options.
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes
xYes
yYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

The description states the main effect (buy tile with gold) but does not disclose failure conditions (e.g., insufficient gold, tile not purchasable) or side effects. No annotations exist to fill this gap, so the description carries the burden. It is minimally transparent but lacks depth.

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

Conciseness5/5

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

The description is very concise: a one-line summary, an Args block, and a usage hint. Every sentence adds value, and the structure is front-loaded and easy to parse.

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?

The tool has 3 well-explained parameters, an output schema exists (so return values are covered), and a prerequisite is mentioned. For a simple action tool, this is largely complete. Missing details about tile adjacency or ownership are minor given game context.

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

Parameters4/5

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

With 0% schema description coverage, the description adds meaning by listing args and brief explanations: 'city_id: City ID', 'x: Tile X coordinate', 'y: Tile Y coordinate'. This clarifies what each integer represents, which is essential. However, it could include more detail (e.g., valid ranges).

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 clearly states 'Buy a tile for a city with gold.' It specifies the action (buy), resource (tile), and context (city, gold). This distinguishes it from siblings like purchase_item (which may buy other items) and get_purchasable_tiles (which is for viewing options).

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?

Explicitly advises to 'Use get_purchasable_tiles first to see costs and options.' This tells the agent when to use this tool and provides a direct alternative, ensuring proper preconditions are met.

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

queue_wc_votesA

Pre-configure World Congress votes for the upcoming session.

Args:
    votes: JSON array of vote objects, e.g.
        '[{"hash": -513644209, "option": 1, "target": 2, "votes": 5}]'
        hash = resolution type hash (from get_world_congress)
        option = 1 for A, 2 for B
        target = player ID for PlayerType resolutions (from get_world_congress
                 target list, e.g. [target=2] Portugal), or target value for
                 non-player resolutions. The handler resolves to the correct
                 0-based index at runtime.
        votes = max votes to allocate (will use as many as favor allows)

Call this BEFORE end_turn when get_world_congress shows 0 turns until next
session. Registers an event handler that fires during WC processing and
casts your votes with the specified preferences.

If you don't call this, end_turn will pause at the World Congress session
and return control to you for interactive voting.
ParametersJSON Schema
NameRequiredDescriptionDefault
votesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Discloses that it registers an event handler that fires during WC processing and casts votes. With no annotations, description fully covers behavioral traits including when to call and effect on end_turn.

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

Conciseness5/5

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

Well-structured with clear purpose, argument explanation, usage instruction, and consequence of not calling. Each sentence adds value without redundancy.

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?

Complete for a single-parameter tool. Covers what, when, how, and alternative behavior. Output schema exists but description adds necessary usage context.

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?

Provides detailed explanation of the votes parameter with example JSON and breakdown of each field (hash, option, target, votes). Schema description coverage is 0%, so description fully compensates.

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?

Clearly states 'Pre-configure World Congress votes for the upcoming session' with specific verb and resource. Distinguishes from sibling tools like get_world_congress and end_turn by focusing on vote configuration.

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?

Explicitly says 'Call this BEFORE end_turn when get_world_congress shows 0 turns until next session' and explains alternative behavior: 'If you don't call this, end_turn will pause... for interactive voting.'

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

recruit_great_personA

Recruit a Great Person using accumulated GP points.

Args:
    individual_id: The individual's ID (from get_great_people output, shown after ability)

Requires enough Great Person points for that class.
The GP spawns in your capital. Use get_great_people to check [CAN RECRUIT] status.
ParametersJSON Schema
NameRequiredDescriptionDefault
individual_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations; description states GP spawns in capital and requires enough points. Could mention error behavior or other side effects, but basic constraints are covered.

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

Conciseness5/5

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

Four lines, front-loaded, clear structure with Args section. No unnecessary words.

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?

Simple tool with one param and output schema available. Description covers prerequisites, location, and data source. Adequate but could mention result format briefly.

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?

Single integer parameter is fully explained: source from get_great_people output, shown after ability. Completely compensates for 0% schema coverage.

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

Purpose4/5

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

Describes recruiting a Great Person with GP points, clear verb and resource. Does not explicitly differentiate from sibling tools like patronize_great_person or reject_great_person, but context implies it.

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

Usage Guidelines4/5

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

Explicitly directs user to check get_great_people for [CAN RECRUIT] status before using. Lacks explicit when-not-to-use, but provides clear prerequisite guidance.

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

reject_great_personA

Pass on a Great Person (skip to the next one in that class).

Args:
    individual_id: The individual's ID (from get_great_people output)

Costs faith. The next Great Person in that class becomes available.
Use when you don't want the current GP and want to save points for a better one.
ParametersJSON Schema
NameRequiredDescriptionDefault
individual_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that faith is consumed and that the next Great Person becomes available. This covers the key behavioral traits for a simple reject action. A higher score would require additional details like reversibility or confirmation, which are not critical here.

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

Conciseness5/5

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

The description is concise with four sentences plus an arg line, all front-loaded with the main action. Every sentence adds value, and there is no redundancy.

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?

Given the tool's simplicity (one parameter, clear action) and the presence of an output schema, the description is complete. It covers what the tool does, its cost, its effect, and when to use it.

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?

The single parameter 'individual_id' is fully explained: 'The individual's ID (from get_great_people output).' This adds essential context beyond the schema's type definition, compensating for zero schema description 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 states the tool's purpose clearly: 'Pass on a Great Person (skip to the next one in that class).' The verb 'reject' matches this, and it distinguishes itself from siblings like 'recruit_great_person' and 'patronize_great_person' by indicating it skips rather than acquires or funds.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: 'Use when you don't want the current GP and want to save points for a better one.' It also mentions that it costs faith and advances to the next GP. However, it does not explicitly state when not to use it or compare with alternatives, though context with sibling tools implies the alternatives.

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

respond_to_diplomacyA

Respond to a pending diplomacy encounter.

Args:
    other_player_id: The player ID of the other civilization (from get_pending_diplomacy)
    response: "POSITIVE" (friendly) or "NEGATIVE" (dismissive)

First meetings typically have 2-3 rounds. The tool automatically detects
and closes goodbye-phase sessions (where dialogue text stops changing).
If SESSION_CONTINUES is returned, send another response for the next round.
ParametersJSON Schema
NameRequiredDescriptionDefault
other_player_idYes
responseYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Discloses that the tool automatically closes goodbye-phase sessions and returns SESSION_CONTINUES to indicate more rounds. This reveals stateful behavior beyond the schema.

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

Conciseness5/5

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

Description is concise with a clear first line, structured Args section, and additional behavioral notes. Every sentence provides value; no redundant or vague phrasing.

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?

Covers essential details: usage, parameters, multi-round behavior, and auto-detection. Minor gap: does not explain what happens with invalid input or other possible return values beyond SESSION_CONTINUES. Otherwise complete for a two-parameter tool.

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 has no descriptions (0% coverage). Description adds full meaning: 'other_player_id' is the player ID from get_pending_diplomacy, 'response' is 'POSITIVE' or 'NEGATIVE' with friendly/dismissive mapping. Completely compensates for missing schema descriptions.

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?

Clearly states the tool responds to a pending diplomacy encounter. Provides specific verb ('respond') and resource ('diplomacy encounter'). Distinguishes from siblings like 'get_diplomacy' and 'propose_peace' by focusing on active response.

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?

Explicitly says when to use (pending encounter from get_pending_diplomacy) and how to interpret response values ('POSITIVE' or 'NEGATIVE'). Describes multi-round behavior and auto-detection of goodbye sessions, giving clear context for iterative use.

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

respond_to_tradeA

Accept or reject a pending trade deal.

Args:
    other_player_id: The player ID of the civilization (from get_pending_trades)
    accept: True to accept the deal, False to reject it

Use get_pending_trades first to see what's being offered.
ParametersJSON Schema
NameRequiredDescriptionDefault
other_player_idYes
acceptYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the action (accept/reject) without disclosing side effects, irreversibility, or output behavior. For a mutation tool, this lacks depth.

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

Conciseness5/5

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

The description is extremely concise: a one-line action statement, parameter explanations, and a prerequisite hint. No fluff; every sentence serves a purpose.

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

Completeness3/5

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

Given the tool's simplicity and the existence of an output schema, the description covers purpose and parameters adequately. However, it lacks details about return values and failure conditions (e.g., what if trade is no longer pending), making it slightly incomplete.

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

Parameters4/5

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

The schema has 0% description coverage, but the tool description clearly explains both parameters: 'other_player_id' (source from get_pending_trades) and 'accept' (boolean meaning). This adds essential meaning beyond the schema's titles.

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 explicitly states the verb 'Accept or reject' and the resource 'pending trade deal', which clearly defines the tool's purpose. The name 'respond_to_trade' differentiates it from siblings like 'respond_to_diplomacy' and 'propose_trade'.

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

Usage Guidelines4/5

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

The description advises to 'Use get_pending_trades first to see what's being offered', providing clear context on prerequisites. However, it does not explicitly mention when not to use this tool or contrast it with similar tools (e.g., respond_to_diplomacy).

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

restart_and_loadA
Destructive

Full game recovery: kill, relaunch, and load a save.

Args:
    save_name: Autosave name (e.g. "AutoSave_0221"). If not provided,
               loads the most recent autosave.

This is the recommended tool for recovering from game hangs (e.g. AI turn
processing stuck in infinite loop). Takes 60-120 seconds total:
1. Kills the game process
2. Waits for Steam to deregister (~10s)
3. Relaunches via Steam (~15-30s for process start + main menu)
4. Navigates menus via OCR to load the save (~30-60s)

After completion, wait ~10 seconds then call get_game_overview to verify.
ParametersJSON Schema
NameRequiredDescriptionDefault
save_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description provides rich behavioral details beyond the annotations (destructiveHint: true), including the full sequence of steps, estimated timing (60-120 seconds), and side effects like killing the process and OCR navigation. No contradiction with annotations.

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

Conciseness5/5

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

The description is well-structured with a summary, an Args section, and numbered steps. Every sentence is informative and necessary, with no redundancy or fluff.

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?

Given the tool's complexity (multi-step destructive recovery), the description covers purpose, usage, parameters, timing, and post-action verification (calling get_game_overview). The presence of an output schema reduces the need to detail return values.

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

Parameters4/5

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

Despite 0% schema description coverage, the description explains the sole parameter save_name: its format (e.g., 'AutoSave_0221') and default behavior (loads most recent autosave if not provided). This adds significant meaning beyond the schema.

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 clearly states the tool's purpose: 'Full game recovery: kill, relaunch, and load a save.' It uses specific verbs and resources, and the combined action distinguishes it from sibling tools like kill_game, launch_game, and load_save.

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

Usage Guidelines4/5

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

The description explicitly recommends this tool for recovering from game hangs, e.g., 'AI turn processing stuck in infinite loop.' It does not explicitly exclude alternatives, but the context makes it clear when to use this tool over individual steps.

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

run_luaA
Destructive

Run arbitrary Lua code in the game. Advanced escape hatch — prefer built-in tools.

Args:
    code: Lua code to execute. Use print() for output, end with print("---END---").
    context: "gamecore" (default) for read-only state queries.
             "ingame" for commands and UI-dependent queries.

Context differences:
  gamecore: Players[], GameInfo.*, Map.*, Game.* — safe read-only access.
            CANNOT use: UI.*, UnitManager.*, CityManager.*, notifications.
  ingame:   All APIs including UI.*, UnitManager.*, CityManager.*.
            Use for: moving units, setting research, diplomacy actions.

Always use print() for output (not return).
ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
contextNogamecore

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Description expands beyond destructiveHint annotation by detailing safety profiles (gamecore read-only, ingame mutable), output via print() convention, and limitations of each context. No contradictions.

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

Conciseness5/5

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

Well-structured with clear sections (Args, Context differences, Always use). Concise yet comprehensive; every sentence adds value.

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?

Comprehensive for an arbitrary code execution tool: purpose, usage, parameters, constraints, output conventions, and safety considerations. Output schema exists but description still provides necessary context.

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 has 0% coverage but description explains both parameters: code (with print() usage) and context (with allowed values and behavioral differences). Fully compensates for missing schema descriptions.

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?

Clear purpose: 'Run arbitrary Lua code in the game. Advanced escape hatch — prefer built-in tools.' Distinguishes from siblings by noting it's an escape hatch.

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?

Explicit when to use ('prefer built-in tools'), context differences (gamecore vs ingame) with detailed allowed APIs and use cases. Provides clear guidance on selecting context based on safety needs.

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

send_diplomatic_actionA

Send a proactive diplomatic action to another civilization.

Args:
    other_player_id: The player ID (from get_diplomacy output)
    action: One of: DIPLOMATIC_DELEGATION, DECLARE_FRIENDSHIP, DENOUNCE,
            RESIDENT_EMBASSY, OPEN_BORDERS,
            DECLARE_SURPRISE_WAR, DECLARE_FORMAL_WAR, DECLARE_HOLY_WAR,
            DECLARE_LIBERATION_WAR, DECLARE_RECONQUEST_WAR,
            DECLARE_PROTECTORATE_WAR, DECLARE_COLONIAL_WAR,
            DECLARE_TERRITORIAL_WAR

Delegations cost 25 gold and can be rejected if the civ dislikes you.
Embassies require Writing tech. Use get_diplomacy to see available actions.
Surprise war is always available if not allied/friends. Other war types
(casus belli) require specific civics and conditions.
ParametersJSON Schema
NameRequiredDescriptionDefault
other_player_idYes
actionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided; the description covers cost and rejection for delegations and mentions tech requirements, but omits rate limits, cooldowns, or success/failure effects.

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?

The description is well-structured with a clear list of actions and supporting details, though the action enumeration could be slightly more compact without losing clarity.

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

Completeness3/5

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

Given the output schema exists, return values are covered; however, the description omits some war type conditions (e.g., liberation war) and does not specify behavior for invalid inputs.

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?

With 0% schema coverage, the description fully explains both parameters: other_player_id is from get_diplomacy output, and action lists all valid values, adding essential meaning beyond the minimal schema.

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 clearly states 'Send a proactive diplomatic action to another civilization' with a comprehensive list of actions, distinguishing it from sibling tools like respond_to_diplomacy.

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

Usage Guidelines4/5

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

The description advises using get_diplomacy to see available actions and notes prerequisites for some actions, but does not explicitly guide when to choose this tool over alternatives like form_alliance.

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

send_envoyA

Send an envoy to a city-state.

Args:
    player_id: The city-state's player ID (from get_city_states)

Requires available envoy tokens. Use get_city_states to see options.
ParametersJSON Schema
NameRequiredDescriptionDefault
player_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action and prerequisite but does not describe side effects (e.g., consumption of envoy tokens), irreversibility, required game phase, or what the tool returns despite the presence of an output schema.

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

Conciseness5/5

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

The description is three short sentences with the core action first, followed by parameter definition and prerequisite. Every sentence adds value without redundancy, making it highly efficient.

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?

For a simple tool with one parameter and an output schema, the description covers the main purpose, parameter source, and a key prerequisite. It does not describe the return value, but the output schema likely provides that. Overall, it is mostly complete for the agent's needs.

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

Parameters4/5

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

Schema coverage is 0% (no description in schema), but the description adds meaning by explaining the player_id parameter as 'The city-state's player ID (from get_city_states),' sourcing it from a sibling tool. This compensates well for the lack of schema documentation.

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 starts with 'Send an envoy to a city-state,' which is a specific verb-resource-target combination. It clearly distinguishes from sibling tools like 'send_diplomatic_action' or 'form_alliance' by focusing on envoys and city-states.

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

Usage Guidelines4/5

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

It states the prerequisite 'Requires available envoy tokens' and directs the agent to 'Use get_city_states to see options,' providing clear guidance on when and how to use the tool. It does not explicitly mention when not to use, but the requirement and reference to sibling tool are helpful.

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

set_city_focusA

Set a city's citizen yield priority.

Args:
    city_id: City ID
    focus: One of: food, production, gold, science, culture, faith, default
           'default' clears all focus settings.

Cities automatically assign citizens to tiles. This biases the AI
toward the chosen yield type when assigning new citizens.
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes
focusYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Discloses it biases AI assignment, not direct control, but lacks prerequisites, side effects, or reversibility details.

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?

Concise with front-loaded purpose, though the 'Args' section is slightly redundant with the schema.

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?

Adequately covers key details for a simple tool; output schema exists but description doesn't reference return value.

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

Parameters4/5

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

With 0% schema coverage, description adds meaning by listing focus options and explaining 'default' clears settings.

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?

Clear verb+resource: 'Set a city's citizen yield priority.' Distinct from sibling tools like set_city_production.

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

Usage Guidelines3/5

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

Explains AI biasing and valid foci, but no explicit when-not-to-use or comparison to alternatives.

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

set_city_productionA

Set what a city should produce.

Args:
    city_id: City ID (from get_cities output)
    item_type: UNIT, BUILDING, DISTRICT, or PROJECT
    item_name: e.g. UNIT_WARRIOR, BUILDING_MONUMENT, DISTRICT_CAMPUS, PROJECT_LAUNCH_EARTH_SATELLITE
    target_x: X coordinate for district/wonder placement (required for districts — use get_district_advisor to find best tile)
    target_y: Y coordinate for district/wonder placement

Tip: call get_cities first to see your cities and their IDs.
ParametersJSON Schema
NameRequiredDescriptionDefault
city_idYes
item_typeYes
item_nameYes
target_xNo
target_yNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Without annotations, the description must reveal behavior. It notes the requirement for target coordinates when producing districts, which adds transparency. However, it does not disclose side effects (e.g., replacing current production), error handling, or authorization needs. The description partially compensates for missing annotations.

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

Conciseness5/5

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

The description is concise and front-loaded with the purpose. It uses a clear list-like format for parameters and includes a single practical tip. Every sentence adds value without redundancy.

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?

Given the complexity of 5 parameters and the existence of an output schema, the description covers all parameters with examples and prerequisites. It is missing details on return value or error states, but the output schema likely fills that gap.

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 description coverage is 0%, so the description fully carries parameter explanation. It clearly specifies the source for city_id, enumerates possible item_type values, gives concrete examples for item_name, and explains when target_x/target_y are required. This adds significant meaning beyond the schema.

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

Purpose4/5

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

The tool's purpose is clearly stated as 'Set what a city should produce.' It is a specific verb+resource combination. While it does not explicitly differentiate from siblings like 'set_city_focus' or 'city_action', the purpose is unambiguous and contextually distinct.

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

Usage Guidelines2/5

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

The description provides a tip to call get_cities first but offers no guidance on when to use this tool versus alternatives such as 'set_city_focus', 'city_action', or purchasing. It lacks explicit context for appropriate usage.

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

set_policiesA

Set policy cards in government slots.

Args:
    assignments: Comma-separated slot assignments, e.g.
        "0=POLICY_AGOGE,1=POLICY_URBAN_PLANNING"
        Slots not listed keep their current policy. Use NONE to
        explicitly clear a slot (e.g. "2=NONE"). Use get_policies to
        see available policies and slot indices.

Wildcard slots can accept any policy type. Military slots accept
military policies, economic slots accept economic policies, etc.
ParametersJSON Schema
NameRequiredDescriptionDefault
assignmentsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description discloses slot behavior: unlisted slots retain current policy, and NONE clears slots. It also explains slot type restrictions (wildcard, military, economic). Missing are potential side effects like cost or turn limitations, but overall transparency is good.

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

Conciseness5/5

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

The description is concise, front-loading the purpose, then detailing the argument format with examples. Every sentence adds value, and the structure with bullet points aids readability.

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?

Given the output schema exists, the description need not explain returns. It covers argument format, slot interaction, and references get_policies for discovery. Minor omission: it might assume the user knows government slots are active, but this is implied.

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?

The single parameter 'assignments' has no schema description (0% coverage), but the description fully compensates with a clear format, examples, and slot-specific semantics, making the parameter meaning completely clear.

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 clearly states the tool sets policy cards in government slots, with a specific verb and resource. It distinguishes itself from the read-only sibling tool get_policies and explains the assignment format, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides clear usage context by referencing get_policies for policy discovery and explaining how to keep or clear slots. However, it does not explicitly state when to use this tool versus alternatives, though no other sibling directly conflicts.

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

set_researchA

Choose a technology or civic to research.

Args:
    tech_or_civic: The type name, e.g. TECH_POTTERY or CIVIC_CRAFTSMANSHIP
    category: "tech" or "civic" (default: tech)

Tip: call get_tech_civics first to see available options.
ParametersJSON Schema
NameRequiredDescriptionDefault
tech_or_civicYes
categoryNotech

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It explains the arguments but does not mention that setting research overrides the current research, or any safety implications. The mutation aspect is not highlighted.

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?

The description is concise and well-structured: purpose first, then argument details, with a helpful tip at the end. It is efficient and easy to scan.

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

Completeness3/5

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

Given the output schema exists and the tool is simple, the description is fairly complete. It mentions a prerequisite (get_tech_civics) and explains the parameters. However, it lacks details on side effects or constraints (e.g., whether the tool can be called multiple times).

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

Parameters4/5

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

Schema description coverage is 0%, and the description adds value by providing examples (e.g., TECH_POTTERY) and clarifying that category defaults to 'tech'. It explains the meaning of both parameters beyond the schema's type-only definition.

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

Purpose4/5

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

The description clearly states the tool's purpose: to choose a technology or civic to research. The examples (TECH_POTTERY, CIVIC_CRAFTSMANSHIP) clarify the input format. However, it does not explicitly distinguish from sibling tools beyond the tip.

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

Usage Guidelines4/5

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

The tip 'call get_tech_civics first' provides clear guidance on when to use this tool. It implies that the tool should be used after obtaining available options, but it does not state when not to use it or provide explicit alternatives.

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

skip_remaining_unitsA

Skip all units that still have moves remaining.

Useful after diplomacy encounters invalidate all standing orders. Uses GameCore FinishMoves on each unit — fast, reliable, no async issues.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Describes implementation using GameCore FinishMoves and asserts reliability, but does not disclose side effects (e.g., whether moves are consumed, undoability) beyond the action itself. With no annotations, more detail would be beneficial.

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

Conciseness5/5

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

Extremely concise: three short sentences, no filler. Every sentence adds value.

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?

Given the tool has no parameters and an output schema likely documents return values, the description covers purpose, usage context, and implementation notes thoroughly.

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

Parameters4/5

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

No parameters defined; schema coverage is 100%. Description does not explicitly state 'no arguments needed,' but baseline for 0 parameters is 4, and the schema implies it.

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?

Clearly states the tool skips all units with moves remaining, which is a specific verb+resource. Distinguishes from sibling tools like unit_action and end_turn by its global scope.

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

Usage Guidelines4/5

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

Provides explicit usage context: 'useful after diplomacy encounters invalidate all standing orders.' Does not explicitly exclude alternatives, but the context is clear enough.

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

spy_actionA

Send a spy to a city or launch a spy mission.

Args:
    unit_id: The spy's composite ID (from get_spies output)
    action: 'travel' to move spy to a city, or a mission type to launch a mission.
        Mission types: COUNTERSPY, GAIN_SOURCES, SIPHON_FUNDS, STEAL_TECH_BOOST,
        SABOTAGE_PRODUCTION, GREAT_WORK_HEIST, RECRUIT_PARTISANS,
        NEUTRALIZE_GOVERNOR, FABRICATE_SCANDAL
    target_x: X coordinate of the target city tile
    target_y: Y coordinate of the target city tile

Travel notes:
    - Valid targets: your own cities and city-states only.
    - Allied civ cities are NOT valid travel targets.
    - Travel is queued end-of-turn; spy position updates after turn ends.

Mission notes:
    - Spy must be physically IN the target city to launch any offensive mission.
    - Use 'travel' first, then end the turn, then launch the mission.
    - COUNTERSPY defends your own city (spy must be in your city).
    - get_spies shows which ops are available at the spy's current location.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes
actionYes
target_xYes
target_yYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral disclosure. It explains that travel is queued end-of-turn, spy position updates after turn ends, and missions require the spy to be physically in the target city. It does not mention potential side effects like diplomatic repercussions or cooldowns, but covers the essential behavior well.

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?

The description is well-structured with sections (Args, Travel notes, Mission notes) and is front-loaded with the main action. It is relatively concise given the complexity, but could be slightly tighter by removing redundant phrases like 'Valid targets: your own cities and city-states only' which is clear.

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?

Despite no annotations, the description is complete enough for an AI agent to use the tool correctly. It explains the workflow (travel then mission), valid targets, sequencing, and references get_spies for available ops. The presence of an output schema supplants the need to describe return values.

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?

The input schema has no property descriptions (0% coverage), but the description fully explains each parameter: unit_id is the spy's composite ID from get_spies, action includes 'travel' and enumerated mission types, target_x and target_y are coordinates. This adds significant meaning beyond the schema.

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 clearly states the tool's purpose: 'Send a spy to a city or launch a spy mission.' It distinguishes between two actions (travel and mission) and provides specific mission types, making it distinct from sibling tools like unit_action.

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?

The description provides explicit guidance on when to use each action: valid travel targets (own cities and city-states, not allied civ cities), the need to travel first before missions, and the sequencing ('Use 'travel' first, then end the turn, then launch the mission'). It also mentions checking get_spies for available ops.

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

unit_actionA

Issue a command to a unit.

Args:
    unit_id: The unit's composite ID (from get_units output)
    action: One of: move, attack, fortify, skip, found_city, improve, repair, remove_improvement, remove_feature, build_route, automate, heal, alert, sleep, delete, trade_route, activate, sacrifice_charges, teleport, spread_religion
    target_x: Target X coordinate (required for move/attack/trade_route/teleport)
    target_y: Target Y coordinate (required for move/attack/trade_route/teleport)
    improvement: Improvement type for builders (required for improve), e.g.
        IMPROVEMENT_FARM, IMPROVEMENT_MINE, IMPROVEMENT_QUARRY,
        IMPROVEMENT_PLANTATION, IMPROVEMENT_CAMP, IMPROVEMENT_PASTURE,
        IMPROVEMENT_FISHING_BOATS, IMPROVEMENT_LUMBER_MILL

For move/attack: provide target_x and target_y.
For trade_route: provide target_x and target_y of destination city.
For teleport: provide target_x and target_y of destination city. Traders only, must be idle (not on active route).
For improve: provide improvement name. Builder must be on the tile.
For repair: repairs a pillaged improvement on the builder's current tile. No improvement name needed.
For remove_improvement: demolishes an intact improvement on the builder's current tile (e.g. to replace a farm with a mine). Costs one charge.
For activate: activates a Great Person on their matching district.
For sacrifice_charges: Royal Society builder sacrifice — spends ALL builder charges to boost a district project (2% of cost per charge). Builder must be on the district tile.
For spread_religion: spreads religion at current tile. Missionaries/Apostles only.
For build_route: builds road/railroad on current tile. Military Engineers only. No charges used; costs 1 Iron + 1 Coal per railroad tile.
For fortify/skip/found_city/automate/heal/alert/sleep/delete: no target needed.
heal = fortify until healed (auto-wake at full HP).
alert = sleep but auto-wake when enemy enters sight range.
delete = permanently disband the unit.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes
actionYes
target_xNo
target_yNo
improvementNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits for each action: prerequisites, side effects (e.g., 'deletes permanently disbands'), charge costs, and resource costs (Iron/Coal for railroads). No contradictions with missing 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?

The description is well-structured with a summary, args list, and per-action sections. It front-loads the purpose. However, it is somewhat verbose (e.g., repeating 'for improve' in two places). Minor redundancy.

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?

Given the tool's complexity (19 actions with diverse requirements), the description is comprehensive: it covers all actions, their parameter needs, prerequisites, and edge cases (e.g., 'Traders only, must be idle'). An output schema exists, so return values are not needed.

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?

Given 0% schema coverage, the description compensates fully by explaining each parameter's role: unit_id source, action enum values, target_x/y required for certain actions, improvement examples. It adds meaning beyond the bare schema.

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 starts with a clear verb+resource 'Issue a command to a unit.' It then lists 19 specific actions, each with distinct behavior, making it easy to distinguish from siblings like city_action which targets cities.

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

Usage Guidelines4/5

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

The description provides explicit per-action usage rules (e.g., 'For move/attack: provide target_x and target_y', 'Builder must be on the tile'). However, it lacks explicit when-not-to-use or direct comparisons to sibling tools.

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

upgrade_unitA

Upgrade a unit to its next type (e.g. Slinger -> Archer).

Args:
    unit_id: The unit's composite ID (from get_units output)

Requires the right technology, enough gold, and the unit must have
moves remaining. The unit's movement is consumed by upgrading.
ParametersJSON Schema
NameRequiredDescriptionDefault
unit_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that upgrading consumes movement and requires specific conditions, but lacks details on failure modes or additional effects beyond movement consumption.

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

Conciseness5/5

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

The description is succinct: one sentence for purpose, then clear bullet-point-like style for arguments and requirements. No unnecessary words, earning its place.

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?

Given the tool has one parameter, no annotations, and an output schema (not detailed but exists), the description covers key aspects (purpose, prerequisites, side effects). It omits return value details, but the output schema compensates.

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

Parameters4/5

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

The only parameter, unit_id, is described as 'The unit's composite ID (from get_units output)', providing crucial context beyond the schema's type integer. This helps the agent understand where to obtain the value, though a format example would be helpful.

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 clearly states the action ('Upgrade a unit to its next type') with an example ('Slinger -> Archer'), distinguishing it from sibling tools like promote_unit which have different functions.

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

Usage Guidelines4/5

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

The description specifies prerequisites (right technology, enough gold, moves remaining) and side effects (movement consumed), guiding the agent on when to use the tool. However, it does not explicitly mention when not to use or provide alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 76 tool updatesv1.1.11
    • First observedappoint_governor
    • First observedassign_governor
    • First observedchange_government
    • First observedchoose_dedication
    • First observedchoose_pantheon
    • First observedcity_action
    • First observeddismiss_popup
    • First observedend_turn
    • First observedform_alliance
    • First observedfound_religion
    • First observedget_builder_tasks
    • First observedget_cities
    • First observedget_city_production
    • First observedget_city_states
    • First observedget_dedications
    • First observedget_diary
    • First observedget_diplomacy
    • First observedget_district_advisor
    • First observedget_empire_resources
    • First observedget_game_overview
    • First observedget_global_settle_advisor
    • First observedget_governors
    • First observedget_gp_advisor
    • First observedget_great_people
    • First observedget_map_area
    • First observedget_notifications
    • First observedget_pantheon_beliefs
    • First observedget_pathing_estimate
    • First observedget_pending_diplomacy
    • First observedget_pending_trades
    • First observedget_policies
    • First observedget_purchasable_tiles
    • First observedget_religion_beliefs
    • First observedget_religion_spread
    • First observedget_settle_advisor
    • First observedget_spies
    • First observedget_strategic_map
    • First observedget_tech_civics
    • First observedget_trade_destinations
    • First observedget_trade_options
    • First observedget_trade_routes
    • First observedget_unit_promotions
    • First observedget_units
    • First observedget_victory_progress
    • First observedget_wonder_advisor
    • First observedget_world_congress
    • First observedkill_game
    • First observedlaunch_game
    • First observedlist_saves
    • First observedload_game_save
    • First observedload_save
    • First observedload_save_from_menu
    • First observedpatronize_great_person
    • First observedpromote_governor
    • First observedpromote_unit
    • First observedpropose_peace
    • First observedpropose_trade
    • First observedpurchase_item
    • First observedpurchase_tile
    • First observedqueue_wc_votes
    • First observedrecruit_great_person
    • First observedreject_great_person
    • First observedrespond_to_diplomacy
    • First observedrespond_to_trade
    • First observedrestart_and_load
    • First observedrun_lua
    • First observedsend_diplomatic_action
    • First observedsend_envoy
    • First observedset_city_focus
    • First observedset_city_production
    • First observedset_policies
    • First observedset_research
    • First observedskip_remaining_units
    • First observedspy_action
    • First observedunit_action
    • First observedupgrade_unit

TDQS

A3.9/5.0

Scored across 76 tools

Disambiguation4/5

Tools are mostly distinct with clear purposes, but there is some overlap among the four save-loading tools (load_save, load_game_save, load_save_from_menu, restart_and_load) which could confuse an agent. The advisor tools are similarly named (e.g., get_settle_advisor vs get_global_settle_advisor) but their descriptions clarify differences.

Naming Consistency4/5

The majority of tools follow a consistent verb_noun pattern (e.g., get_cities, set_production, propose_trade). However, a few tools like 'city_action', 'unit_action', and 'spy_action' deviate from this pattern, using noun_noun instead. This minor inconsistency prevents a perfect score.

Tool Count2/5

With 76 tools, the server far exceeds the typical recommended range for a single server. While Civilization 6 is a complex game with many mechanics, this many tools can overwhelm an agent and increase the risk of misselection. A more modular design with multiple servers might be better.

Completeness5/5

The tool set covers virtually all aspects of Civilization 6 gameplay: city management, unit commands, diplomacy, government, religion, great people, world congress, spies, and more. There are no obvious gaps; even edge cases like losing cities and disloyalty are handled. The inclusion of advisor tools further enhances completeness.

Maintenance

ActivityInactive
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers