Skip to main content
Glama
ty-meador

civ-v-llm-harness

by ty-meador

city_screen

Inspect and manage a Civilization V city: view buildings, specialists, worked tiles, production, growth, and buyable plots; set focus, avoid growth, buy tiles, or sell buildings.

Instructions

The city screen for one of my cities: buildings, specialists and their Great Person meters, which tiles are being worked, the full production queue, citizen focus, avoid-growth, and plots that can be bought (buyable + buy_gold). A tile the screen still prices in red (not enough gold) has buy_gold and can_afford: false instead of buyable. meters is the corner of the city screen: food stored/needed and the growth label (a settler counts as stagnant), production stored/needed/per-turn, culture stored/needed and turns until the next border tile, and the fractional gold/science plus faith and tourism per turn; meters.breakdown is the hover behind each of those (sources, food eaten, modifier lines, total). Specialist rows and slots carry yields; built buildings carry their enum and name (what each does: reference("buildings")). An owned tile another of our cities is working names that city (worked_by); a blockaded water tile or a visible enemy unit is marked. Buildings a human can click-to-sell carry can_sell / sell_gold / gold_maintenance. Writes from the same screen: set_city_focus, set_avoid_growth, change_working_plot, buy_city_plot, city_task (annex / raze / unraze), sell_building.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
city_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.11.0

TDQS

A3.7/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 and does substantial work: it discloses the buyable vs buy_gold/can_afford:false red-pricing distinction, can_sell/sell_gold/gold_maintenance on sellable buildings, worked_by for tiles another city owns, and blockaded/enemy markers. The trailing note that writes are separate tools implies this call is read-only, which is important context. It stops short of 5 because it never explicitly states the call has no 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.

Conciseness4/5

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

It is long but information-dense: nearly every clause maps to an actual field in the return payload (meters, breakdown, yields, buyable, worked_by, can_sell), which is necessary since no output schema exists. It is front-loaded by starting with what the screen contains, though the single undifferentiated paragraph reduces scanability.

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?

There is no output schema, so the description must explain returns, and it does so thoroughly, covering meters/breakdown, specialists, worked tiles, buyable plots, sellable buildings, and the write-tool pointers. The remaining gap is call-side guidance (parameter format and when to choose this over sibling reads).

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 single param `city_id` has 0% schema description coverage, so the description must compensate. It conveys that the tool is scoped to 'one of my cities', which indirectly explains the argument, but it never states format, valid range, or how to obtain the id (e.g. from `cities`). Marginal value over 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?

States a specific verb+resource: it is the read-only view of one city's screen, and it enumerates exactly what the payload contains (buildings, specialists, worked tiles, production queue, focus, buyable plots). An agent immediately understands it returns city-state data. It does not name a sibling like `cities` or `compare` to differentiate scope, so it stops short of a 5.

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?

Usage is only implied: this is the screen to inspect a city's full status. It helpfully notes that writes from the same screen live in separate tools (set_city_focus, buy_city_plot, etc.), which routes the agent away from using this for mutations, but it never states when to prefer it over `cities`, `compare`, or `overview`.

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

Deploy Server

Other Tools