civ-v-llm-harness
The harness targets Sid Meier's Civilization V with Brave New World, owned on the player's own Steam account and run as the native Linux Steam build (Steam downloads it once Proton is turned off for the game). Setup walks the user through the Steam-side steps, such as switching the game off Proton and enabling the tuner in the game's config, so an AI agent can take a real human seat in hotseat, LAN, or solo games.
Supports running the game and harness on a Steam Deck, which is documented as a working host platform (docs/DECK_HOWTO.md) alongside a standard x86_64 Linux desktop with a display.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@civ-v-llm-harnessPlay my next turn and give me a summary of what happened."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agentic MCP tools for Sid Meiers Civilization 5: Brave New World
Give your agent a civilization. See what survives.

Game image from Civilization V on Steam.
Built for agentic play
A rival settles the river first. Your peaceful science plan now has a border problem. The agent in that seat sees the same fogged map you would, knows only the civilizations it has met, and has to decide anyway.
This harness puts an AI agent in a real seat in Sid Meier's Civilization V. You own the game, you host the table, and the agent takes a human seat: across from you in hotseat or over LAN, in your chair against the game's AI, or beside other agents in one match. It plays by the same rules as everyone else at the table and sees no more than you would.
Ready to play? Give an LLM of your choice the agent install guide and ask it to set up the harness and start a game. The guide has the commands and checks; this page is for you. Give your agent the raw guide.
Requirements | Current release | Ways to play |
Native Linux Steam build, Brave New World | 1.15.0 · Lua runtime v269 | Solo · hotseat · LAN · multi-LLM |
On this page
Before you start
At the table
Under the hood
Related MCP server: civ6-mcp
What you need
The game | Sid Meier's Civilization V with Brave New World on your own Steam account, as the native Linux build. Steam downloads it once you turn Proton off for the game. |
A Linux desktop | x86_64 with a display. The game runs in a normal window on your screen. A Steam Deck works ( |
An agent that speaks MCP | Claude Code, Codex CLI or any other MCP client, with whatever agent and budget you give it. Each agent at the table gets its own server. |
Python 3.11 or newer | No compiler and no |
Setup is one sitting, and your agent does it. Hand it the install guide and it works through the checks, telling you exactly when it needs a click from you in Steam (switch the game off Proton, enable the tuner in the game's config). The game itself takes about two minutes to cold start.
Fair play
The agent sits in a human seat and gets a human's information, nothing more. That is the whole design.
Fog of war is fog. Fogged tiles carry no live units. Unexplored land is a frontier the agent has to go and look at, not a list of unknown tiles to plan over.
Unmet civilizations do not exist until the agent meets them. The AI's private plans stay private.
Diplomacy goes through the game's own screens. Deals, demands, peace terms, friendship, denouncement and leader conversations are the same ones the AI offers you, with the AI's actual replies. Trades between you and the agent work in hotseat and LAN.
Refusals mirror the UI. If the game would not let you click it, the harness refuses it and says why. Every screen, hover and refusal reason a human reads is what the agent reads.
No back door. The raw Lua escape hatch is off unless you turn it on.
docs/LIMITATIONS.mdlists what is withheld and why, each item checked against the engine.The whole game. Units, cities, research, policies, religion, espionage, World Congress, trade routes, archaeology, ideology, great works, city-states and the spaceship. No shortcut to a victory.
Built for how a model plays
The world reaches the agent as text shaped to its way of thinking, so it spends tokens on decisions rather than on scrolling. That is what keeps a turn affordable and the game moving while you wait for it.
Tiles as text, at the coordinates the move tools take. Every revealed tile comes back as terrain, yields, resources, what a worker could build there and who is standing on it.
The rules once, not on every row.
referenceis every unit, building, tech, policy, promotion, belief and terrain with its effect text, read once from the game's database (mods included). Lists carry names and live numbers only, so no hover is paid for twice.One call per turn.
finish_turnends the turn, waits, and comes back with the new turn's status, what happened in between, and the agent's own notes.briefingfolds a whole turn into one compact read: about 2.5 KB for a 38-unit empire where the separate reads are 30 KB.It sleeps through quiet turns, by its own choice. With
skip_quiet_turnsthe agent asks to be left alone until something a human would look up for: combat, a leader at the door, an empty city, happiness falling, a threat beside a unit on the move. the agent picks how many turns to let pass; the harness only ever wakes it early.Standing orders.
give_orderhands a unit a short plan (walk there, build a farm; heal to 80%, go back, fortify) that runs itself at the start of each turn through the ordinary move tools. The moment anything unplanned happens it pauses and hands the unit back with a reason. It never attacks, declares war or ends the turn on its own.Assignments and a notebook that survive amnesia.
assigngives a unit or city a role, a target and a done-when, and every briefing re-checks it against what the seat can see now.remember/recallkeep the plan, threats and promises beside the game. Both outlive a context reset, so a model that forgets everything mid-game picks its own plan back up.It looks before it leaps.
tactical_viewis a unit's six neighbours with what a move would do there (attack, open, refused with why, enemy).comparelays out a few production, research or worker options side by side with costs, turns and effects (a building already in the queue reads as queued, not refused). Neither picks for the agent.Batches and safe retries.
doruns a list of orders and stops at the first refusal. Anaction_idmakes a retried call a replay, never a second move.A refusal says what to do instead. A mission name the engine does not have comes back with the nearest real ones and the unit's legal orders; a sleep where the unit can fortify names the equivalent; an end refused for units with movement left carries the exact skip orders for the next
finish_turn; a greyed button, a refused purchase, peace or ranged attack carries the engine's own sentence; a melee attack the engine drops without a word is named as a refused attack with the first closed gate the harness can read, not as an occupied plot. Every refusal is a next step, never a dead end.It knows when it has won. The last spaceship part's reply says
game_overandvictory: "science",spaceship_statusreadscomplete, and thegame_overgate namesexit_to_main_menu; the engine's own end-turn blocker freezes at that moment and is not the read to trust.A turn is one call when nothing needs a look.
finish_turn(actions=[...])runs the closing orders and ends the turn together, ending nothing if an order is refused; a move's result carriesrevealed, what the move showed, so "move the scout and see" needs no second read. A client that pays for every tool description on every request starts the server with--tools compact: 24 core tools pluscall(tool, args)for the rest.It says what a human sees on the leader screen and on the map. Every war the seat is in comes with the Negotiate Peace gate (
wars, the briefing'sat_warrows:make_peacecan be asked now, or why not) -- an agent sat twenty turns in a siege that one white-peace offer ended. A unit the engine moved while the others played is aunit_displacedevent with where it went and what shares the tile it left. A frontier plot a foreign unit or city stands on saysoccupied, names the city, and stays in the reply however long the frontier is. A turn no wait of ours opened still gets its turn-start work before its first order, and a turn that began while a leader screen was being answered is handed back unended with what it needs, never ended blind.You can watch the seats think.
python -m harness.spectator --ledger logs/calls.jsonlserves a page (a canvas map that stays at the frame on Huge maps, d3 for the zoom and the panels) where every plot a tool reply handed a model pulses in that seat's colour over a greyscale map, acts stay painted until the turn ends, the last seat's footprint ghosts through the next, and an Observer / Seat N switch cuts between the unfogged world and what one seat's replies contained. A seat view draws only what that seat's screen shows: never-seen plots black, fogged plots dimmed, other players' units only where visible. Read-only, records and replays with a scrubber (play/pause, speed, a slider whose ticks are the turn boundaries), and reads the game only when the world moves (docs/VISUALIZATION.md).
briefingmeasured live. Over four hotseat turns played both ways (docs/NOTES.md): 4.25 calls a turn against 8 with the separate reads, no refused order against two, about the same bytes.tactical_viewnever guesses. Adjacency and map wrap come from the engine. No path cost or turns-to-reach: the engine cannot give them safely, so the view leaves them out. Nothing fogged is called safe.comparekeeps a tile's own gain apart from the empire's (nothing until a city works it) and never calls a trade destination safe under fog.A trade unit's second gate. Past the slot count the engine asks whether some city of yours can start a new route of that kind now; when it cannot, the briefing,
compareand a refusedset_productionquote the engine's own sentence ("no available sea trade routes") instead of offering to build or buy.What an assignment review can report.
on_track,condition_met, orneeds_reviewwith the observation behind it: a unit gone (an upgrade on its last plot is named; our ownupgrade_unitcarries the assignments and the open order onto the new id by itself), a reused id never followed, a city lost, a settle site now too close to a city, or a target out of sight kept as last seen, never assumed gone.amend_assignmentandclose_assignmentdo the rest.What pauses a standing order. A hostile in sight, damage, an enemy on the destination, a refused step, no progress, or a direct command to that unit.
What wakes
skip_quiet_turns. Combat, a leader message, an empty city, happiness falling, a new strategic-resource shortfall, or a barbarian camp or hostile unit beside a unit on its way somewhere.After a context reset, a briefing carries the latest notes again and every assignment is re-checked.
What a game looks like
the agent plays through tool calls; you watch the game window. On its turn it checks what changed, inspects its cities and units, chooses actions the game permits, then ends the turn. In hotseat the window passes back to you and you take your turn as usual. the agent's loop looks like this:
finish_turn -> (status, digest, notes; or briefing=true) -> briefing / overview / units / cities / known_world
-> act (check available_* first) -> turn_status until nothing blocks -> remember(plan) -> finish_turnWhen something blocks the turn, the status names it and points to the tool that clears it. Refused actions explain why and what to try instead.
Turn 269, trimmed for width. It predates runtime v217; a status now also names the seat, carries the
gate to clear first, happiness and any alerts, and lists automated or already-moving units under
todo.ongoing:
{"turn": 269, "my_turn": true, "mode": "single", "blocking_name": "NO_ENDTURN_BLOCKING_TYPE",
"todo": {"promotions": [], "research_unset": false, "cities": [], "units": []},
"pending_popups": [], "game_over": false, "notifications": {"live": 2, "held": 99}}What to expect
It is slow and it costs tokens. A developed empire means dozens of tool calls per turn. A game to victory is a long project; an evening is a few dozen turns. Quiet-turn skipping and standing orders are what keep that bill down.
Leave the window alone during the agent's turn. It drives the game's own screens the way a mouse would, and a stray click from you lands in its turn.
The game crashes sometimes. The Linux port does, with or without the harness. Quick saves every turn in solo (
quick_saveis one call elsewhere), the game's own autosaves andload_latestmake it a pause, not a loss. A supervisor can relaunch the game and rejoin a LAN game on its own.You can read its mind. Every note the agent writes to itself and every assignment it gives a unit is a plain JSON file under
~/.local/share/civ5-harness/notes/, per game and seat. You can see what it planned before you find out whether it worked.
Ways to play
Mode | Who is where | Start it with |
Solo | LLM in seat 0 versus the game's AI |
|
Hotseat | You and the LLM(s) at one machine, turn by turn |
|
LAN | Each LLM runs its own game instance and joins like any player |
|
All three share the same tools. Several agents in one game each get their own MCP server, one per seat;
every status names the seat it is playing, and set_seat moves a server to another human seat without a
restart. The agent cannot take over one of the built-in AI seats; the game does not expose that. To move a
two-seat hotseat game along between sessions, scripts/hotseat_rounds.py alternates the seats and stops at
the first turn that needs a decision.
The install guide walks through each mode. Saved states in saves/ reproduce late-game diplomacy, peace
terms, Venice puppets and a combat lab if you want to drop a model into something interesting on turn one.
How it works
flowchart LR
A["LLM client"] -->|stdio| B["MCP server<br/>145 tools, or 24 + call"]
B -->|Unix socket| C["tunerd<br/>one tuner connection"]
C -->|TCP 4318| D["Civilization V<br/>preload shim + FireTuner"]Civilization V ships a debugging channel, FireTuner, that is a remote Lua console into the game's own UI
contexts. The harness keeps that channel open in multiplayer with a small preload shim, injects a Lua
runtime that ports the stock UI's own logic (combat previews, trade legality, hovers), and drives every
screen the way a mouse would. Because the network only carries player commands in a lockstep simulation, a
real game instance is the only faithful client; that is why the LLM gets one. docs/ARCHITECTURE.md has
the long version.
Honest limits
Linux only, native Steam build only, Brave New World only. No Windows, no macOS, no Proton.
With the tuner enabled the game listens on every interface by default. The install guide binds it to loopback; do not skip that on a shared network.
A few end-turn blockers (some World Congress votes, some free-choice popups) have no tool yet; the agent is told to stop and ask you.
docs/GAPS.mdis the running audit.Movement-cost previews and path overlays are not readable: the engine calls that back them crash the game.
No hosted CI by choice; the suite runs locally before every push.
Documentation
docs/AGENT_INSTALL.md: the complete install brief for an agent.docs/PLAYBOOK.md: how a seat should play, turn by turn, with the blocker table. A seat reads it from inside the game ashow_to_play(topic), withdocs/TOOL_REPLIES.md(every key of the long replies) served the same way.docs/ARCHITECTURE.md: layers, information boundary, game modes, repo layout.docs/LIMITATIONS.md: what the harness will not do, each item checked against the engine.docs/GAPS.md,docs/ROADMAP.md,CHANGELOG.md: live audit, plan, and the map from package versions to runtime versions.docs/DECK_HOWTO.md: running a seat on a Steam Deck.saves/README.md: the reproduction states and what each one shows.
Development
sudo apt install lua5.4 liblua5.4-0 # luac for the runtime lint, liblua for the Lua tests
uv sync --group dev
scripts/check.sh # 1495 tests: the shipped Lua under lupa, the Python layer against fake bridges; no game neededCIV5_CALL_LOG=/path/calls.jsonl in the server's environment writes one line per tool call (bytes, trips,
seconds, refusals, and client: CIV5_CLIENT when set, else the MCP client's name/version, so two models on
one seat stay apart); scripts/ledger_report.py [--seat N] [--client codex] turns it into a per-turn table
with a per-client footer. Off by default; scripts/llm_seat_loop.py sets both for the agent it runs.
python -m harness.spectator --ledger /path/calls.jsonl serves a live, read-only page (web/viz/, d3) of the
game and the seats' attention: the whole map in greyscale, every plot a tool reply handed a model pulsing once in
the seat's colour, acts staying painted for the turn, a ghost of the previous seat, a heatmap, and an Observer /
Seat N switch. --record / --replay work without a game. See docs/VISUALIZATION.md.
The Lua runtime is one file per game domain under harness/lua/runtime/ (its README.md says which file
owns what and how to add one); harness/runtime_source.py lists the load order and assembles what is injected.
It carries its own version counter (RUNTIME_VERSION in bootstrap.lua), bumped on every change to any of
those files, because a running game keeps the old runtime until a newer number arrives; the source digest
re-injects a changed runtime even when the bump was forgotten. Commit subjects carry it as runtime vNNN.
Issues and milestones live on GitLab: https://gitlab.com/Tyler-Meador/civ-v-linux-mcp.
Authorship
This project was written by Claude, Anthropic's AI model, working in Claude Code under the direction of
Ty Meador, who owns the game, ran every live session and decided what the harness should and should not do.
Claude Fable 5.1 wrote most of it, with Claude Opus 5, Claude Sonnet 5 and Claude Opus 5.5 on earlier
commits; the Co-Authored-By trailers in the git history say which model wrote what. That covers the
reverse engineering of the FireTuner protocol and the game binary, the shim, the Lua runtime, the MCP
server, the tests, the documentation and this README. Ty's
contribution is the design brief, the live verification against the running game, the judgement calls
recorded in docs/GAPS.md, and the standard that the seat may see only what a human sees.
License
MIT. Sid Meier's Civilization V, its assets and the stock UI Lua quoted in docs/ belong to
Firaxis Games and Take-Two Interactive and are not covered by this licence; you need your own copy of the
game.
Available Tools
144 toolsaccept_dealA
Accept an incoming trade already on the table (see incoming_deal). Does not construct a new deal.
To make an offer of my own use propose_deal. The answer carries the AI's remark, the accepted_items
and measured effects (gold per turn, deal count, resources before vs after); new_deal is the row the deal
now holds in current_deals (a renewal's offered rows carry the old deal's end; the new end replaces it, the
offered one stays as final_turn_offered). When another leader is queued behind this one (several can wait at a turn start), the answer carries
still_pending: true, next (their screen, words, buttons and the deal on the table) and the gate it
raises: answer that one next, no discussion() read needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does so well: it enumerates the return payload (remark, accepted_items, effects, new_deal), explains the renewal row semantics (offered end vs final_turn_offered), and discloses the multi-leader queue behavior (still_pending, next, gate). This is behavioral context an agent could not derive from the empty schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and the sibling routing are front-loaded in the first two sentences. The remainder is dense but information-bearing, covering returns and the queue/gate flow. A few clauses are syntactically heavy (the parenthetical on current_deals), which costs it the top mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must supply both the safety/behavior profile and the return shape — and it largely does. Remaining gaps are failure modes (e.g. what happens if the deal was already withdrawn) and any preconditions, but coverage of the success path and the pending-leader gate is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 per the rubric. There is nothing for the description to clarify or compensate for on the input side.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Accept an incoming trade already on the table') and immediately anchors to the sibling that surfaces it (incoming_deal). It also explicitly excludes the sibling it is not ('Does not construct a new deal'). The distinction from propose_deal is stated outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (an offer already on the table), when to use the alternative (propose_deal 'To make an offer of my own'), and gives a routing rule for the pending-leader case (answer the next screen, no discussion() read needed). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accept_friendshipA
Accept a pending Declaration of Friendship proposal (turn_digest's leader_message with state
DISCUSS_WORK_WITH_US). Works even if the discussion dialog was already dismissed/declined -- the
request stays acceptable server-side. Check diplomacy() or IsDoF via diplo_event's underlying call
if you need to confirm it actually took.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers the key non-obvious trait: the request remains acceptable server-side even after dismissal/decline. It also points to diplomacy()/IsDoF as a way to verify the effect, though it does not state permission requirements or whether acceptance can be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and the identifying state, then adds the edge-case behavior and a verification hint. Dense and mostly earned, though the internal state name and API reference add some jargon weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool with no annotations, the description covers the action, the non-obvious server-side persistence, and how to confirm the result. The only real gap is the semantics of player_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single player_id parameter is undocumented. The description implies the target is the leader who sent the proposal, but never says how to obtain or format player_id, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Accept) and resource (a pending Declaration of Friendship proposal), and pins down the exact server-side state (turn_digest's leader_message with state DISCUSS_WORK_WITH_US). An agent can distinguish it from propose_friendship, respond_discussion, and accept_deal without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition for use (a pending DoF proposal exists) and explicitly notes it still works after the dialog was dismissed/declined, which is a non-obvious usage case. It stops short of naming the sibling tools an agent should prefer when the proposal is not a friendship offer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_reformation_beliefA
When turn_status shows ENDTURN_BLOCKING_ADD_REFORMATION_BELIEF (Piety's Reformation policy): pick one from available_beliefs(kind="reformation").
| Name | Required | Description | Default |
|---|---|---|---|
| belief | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the blocking trigger and the option source, but it does not describe the effect of adding a belief, whether the choice is permanent, or validation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The trigger condition comes first, followed by the required action and source.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity one-parameter choice tool with no output schema and no annotations, the description provides the key context: when to invoke it and where to get valid input. It is nearly complete, though side-effect details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there is no enum, so the description must compensate. It does by directing the agent to obtain the belief value from available_beliefs(kind="reformation"), though it does not specify the exact string format expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific trigger and action: when turn_status shows the blocking Reformation status, pick one belief from available_beliefs(kind="reformation"). This distinguishes it from the sibling available_beliefs, which only lists options. It could be slightly clearer that the selected belief is added, but the meaning is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use condition tied to turn_status and names the correct source for valid choices, available_beliefs(kind="reformation"). This is precise enough that an agent can route correctly without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amend_assignmentA
Change an active assignment in place: only the fields given change (role, purpose, done_when and review
as in assign; unit_ids / city_ids replace the list; target={} clears the target; review={} clears the triggers). Use it when a unit was upgraded (new id), a
site moved, or the review turn passed and the plan still holds. note is kept in the assignment's history.
The answer is the amended assignment reconciled now, with previous values. One game read.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| role | No | ||
| review | No | ||
| target | No | ||
| purpose | No | ||
| city_ids | No | ||
| unit_ids | No | ||
| done_when | No | ||
| assignment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: partial-update semantics, explicit clear operations (target={} clears the target, review={} clears the triggers), note persistence in history, the returned 'previous' values, and a cost hint ('One game read'). It omits error/auth behavior and any failure modes, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core in-place/partial semantics, then the usage cases, then the return and cost. It is appropriately sized, though the parenthetical clarifications are dense and the 'review as in assign' clause reads awkwardly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description covers most fields, the clearing rules, the return value with `previous`, and the cost. Gaps remain around assignment_id semantics and error/edge behavior, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there are 9 parameters, so the description must compensate — and it does, defining role, purpose, done_when, review, note, and the replace-vs-clear semantics of unit_ids/city_ids/target beyond anything the bare schema conveys. The replacement/list-overwrite rule is exactly the kind of meaning the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Change an active assignment in place' — and nails the scope with 'only the fields given change'. It implies the create/close counterparts (assign, close_assignment) by referencing 'as in assign', so an agent can tell it apart from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger conditions: 'Use it when a unit was upgraded (new id), a site moved, or the review turn passed and the plan still holds.' That is a clear when-to-use, and the 'as in assign' reference implies the create alternative, but there is no explicit when-not or named-alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
answer_popupA
Press one button (1-based id from generic_popup) of the open generic confirmation. Runs the button's
real handler (e.g. Network.SendReturnCivilian) and closes the window. Returns discussion_pending
because some answers make an AI leader speak next (dismiss_discussion).
| Name | Required | Description | Default |
|---|---|---|---|
| button | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that the button's real handler runs (side effects), that the window closes, and that the call may return `discussion_pending` because some answers trigger an AI leader response. It omits error/failure behavior and permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight, front-loaded sentences with no filler; the action, side effect and return value each occupy their own clause. Dense but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param tool with no output schema and no annotations, the description covers the action, its side effect, the return sentinel, and the parameter's format/origin. The remaining gap is failure modes, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: 'button' is clarified as a 1-based id sourced from generic_popup. That is exactly the indexing and provenance information an agent needs, though it could note valid ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Press one button ... of the open generic confirmation', and it names the sibling (generic_popup) that supplies the button id. An agent can distinguish this from sibling popup tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'of the open generic confirmation' implies the prerequisite that a generic popup must already be open, but there is no explicit when-to-use/when-not guidance or comparison to alternatives like respond_discussion or dismiss_discussion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archaeology_optionsC
Completed dig: artifact origins/era, available art/writing slots, artifact vs landmark or writing vs culture choices. Unmet artifact origins are masked.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral-disclosure burden. It usefully notes that unmet artifact origins are masked, but says nothing about whether the tool is read-only, whether it has side effects, what permissions are needed, or what the response shape looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the key context ('Completed dig:') without filler. Its telegraphic fragments and slash-heavy lists reduce readability slightly, but every phrase contributes content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description must fully orient the agent. It lists option content and masking behavior, but omits what the tool actually returns and when it should be called versus choose_archaeology, leaving significant gaps for a 0-parameter options tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the rubric assigns a baseline of 4. The description correctly adds no parameter-level detail because there are no parameters to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the context as a completed dig and lists the kinds of options involved (artifact origins/era, art/writing slots, artifact/landmark or writing/culture choices). However, it lacks a clear verb and does not explicitly distinguish itself from the companion choose_archaeology sibling, so an agent must infer its role as an options-listing tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only the phrase 'Completed dig' hints at a precondition for use. There is no explicit when-to-use guidance, no when-not-to-use guidance, and no reference to the related choose_archaeology tool, leaving routing decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assignA
Give units or cities a structured assignment in my notebook: what they are for, where, when it is done and when to look again. A prose note (remember) says why; an assignment lets a later me -- after a context reset, in a new session -- see at once what each unit is doing and whether that still holds. role: a short word (escort, settle, improve, defend, explore, diplomacy...). purpose: one sentence. unit_ids / city_ids: mine, now; each is fingerprinted (type and creation turn; name and founding turn), so if an id later names a different unit the assignment says the assigned one is gone instead of following it. target: {x, y} a plot (a city site, a tile to improve, a city to take or hold), {unit_id, owner} a foreign unit, or {player} a civ or city-state. done_when (checked on every read; default "manual"): {kind: "unit_at"|"city_at"|"improvement", x, y} (x, y default to the target plot; unit_at takes unit_id, improvement takes improvement e.g. "FARM"), {kind: "building", city_id, building}, {kind: "tech", tech}. review (optional): {turn: N, hostile_within: plots, hp_below: percent} -- look again at turn N, when a visible hostile comes that close to an assigned unit or city, when an assigned unit's hp drops below. replace_id: this replaces that assignment, which is closed as replaced (the two never compete). The answer is the stored assignment reconciled right away (see assignments). One game read.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| review | No | ||
| target | No | ||
| purpose | Yes | ||
| city_ids | No | ||
| unit_ids | No | ||
| done_when | No | ||
| replace_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral burden: fingerprinting behavior, done_when checked on every read with default manual, review triggers (turn, hostile proximity, hp), replace_id closes old assignment, and return is the stored assignment reconciled immediately in one game read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and contrast to remember, then systematically covers parameters. Despite its length, every clause adds necessary semantics for an 8-parameter nested tool; no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description states the return ('stored assignment reconciled right away ... One game read') and covers all inputs. Combined with detailed behavioral notes, it is complete for a complex create/replace assignment tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description defines every parameter: role, purpose, unit_ids/city_ids with fingerprinting semantics, target variants, done_when forms and defaults, review triggers, and replace_id behavior. It adds syntax and meaning beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Give ... assignment) and resource (units or cities in my notebook), and explicitly contrasts with remember, so the agent can distinguish siblings. It also names the assignments sibling for the return.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly contrasts with remember: prose note says why, assignment persists structured state for later sessions. However, it does not mention when to use amend_assignment or close_assignment instead, so not full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assignmentsA
My assignments (see assign), each reconciled against what I can see now, in one game read. An active row:
id, role, purpose, since_turn, state -- condition_met (its done_when holds: evidence says how;
close_assignment it), needs_review (reasons lists each observation: an assigned unit missing or gone -- an
upgrade on its last plot is named --, a city no longer mine, the target plot's owner changed or a city now
too close to a site, a target unit not where last seen, a war or elimination, the review turn, a hostile
within range, low hp) or on_track --, units / cities as they are now, target as observed (a fogged
plot or an out-of-sight unit is known: stale / unknown with when it was last seen; never assumed gone or
still there), done_when and review. Nothing is closed, re-targeted or ordered for me.
status: "active" (default), "closed" (completed, cancelled, replaced), or "all". briefing() carries the
active ones compactly, needing-a-look first.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | active |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers well: it discloses the read-only nature ('Nothing is closed, re-targeted or ordered for me'), the state machine (condition_met / needs_review / on_track), the meaning of needs_review reasons, and the fog rule that unseen plots/units are marked stale/unknown rather than assumed gone. It stops short of stating permissions or any side effects beyond the read-only claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a dense wall of run-on sentences with nested parentheticals and backtick-quoted tokens that are hard to parse. Much of the length is legitimately needed to convey the return shape given no output schema, but structure and scannability suffer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain the return shape and it does thoroughly – row fields, state values, reasons list, units/cities/target semantics. Little an agent needs to call it correctly is missing, though the parameter explanation and its placement at the end is less prominent than the return detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single 'status' parameter has 0% schema description coverage, so the description must compensate, and it does: status is documented as 'active' (default), 'closed' (completed, cancelled, replaced), or 'all'. This fully enumerates the accepted values and their meanings, filling the gap the schema leaves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States it returns 'My assignments (see assign), each reconciled against what I can see now, in one game read' – a specific resource with scope. It implies it is a read/list operation and differentiates itself from assign/amend_assignment/close_assignment by noting nothing is closed, re-targeted or ordered. The verb itself is implicit rather than stated, and the dense return-shape prose buries it somewhat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It references 'see assign' and mentions that briefing() carries the active ones compactly, needing-a-look first, which hints at an alternative for a terse view. But it never explicitly says when to reach for this tool versus briefing(), or what the caller must do first. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_beliefsA
Beliefs still available for one slot (enum + name; what each does is in reference("beliefs")). kind: pantheon | founder | follower | enhancer | bonus | reformation. Founding a religion takes pantheon(if none yet)/founder/follower(/bonus for Byzantium); enhancing takes follower + enhancer. kind=founder also lists the religions nobody has founded.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes |
TDQS
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 does disclose a useful non-obvious behavior ('kind=founder also lists the religions nobody has founded') and points to reference('beliefs') for semantics, but it says nothing about permissions, cost, or return format for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the allowed kind values in the first two segments, then adds workflow context. The semicolon-heavy, terse style is efficient but borders on cryptic, particularly the reference() call embedded mid-sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema and no annotations, the description supplies the enum values, the meaning of each, and the workflow context needed to invoke it correctly. Only minor gaps remain (no explicit next-step routing, no return-format note).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema declares no enum for kind, so the description's explicit enumeration ('pantheon | founder | follower | enhancer | bonus | reformation') is essential and fully compensates. It further explains what each kind selection implies, adding real meaning beyond the bare parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: 'Beliefs still available for one slot', which distinguishes it from found_pantheon/found_religion/enhance_religion siblings that consume beliefs. It also clarifies the return shape ('enum + name'). Not quite a 5 because the phrasing is dense and the slot notion depends on the reader inferring the game mechanic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when each kind matters by describing the founding workflow ('Founding a religion takes pantheon/founder/follower...; enhancing takes follower + enhancer'), which helps the agent pick the right kind. However, it never explicitly says to call this before found_religion/enhance_religion, nor names those siblings as the next step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_city_strikesA
Plots this city can bombard right now. Empty if it has no ranged strike this turn.
| Name | Required | Description | Default |
|---|---|---|---|
| city_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It discloses the useful empty-result behavior, but doesn't state whether it requires the city to have ranged capability, permissions, or any side effects. It reads as a pure read query, which is helpful but not fully specified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded; nothing wasted and the empty-case caveat follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-param query with no annotations or output schema, the description conveys both what it returns (bombardable plots) and the empty-result condition. Minor gaps remain around the exact return format, but it's largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single city_id parameter. The description's 'this city' weakly implies city_id selects the acting city, but adds no format or constraint detail beyond what the bare integer schema shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it returns the plots a given city can bombard right now. It's clearly distinguishable from the action sibling city_ranged_attack, though it doesn't name that sibling directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Empty if it has no ranged strike this turn' gives a usage condition and implies the tool is a query to run before attacking. However, there's no explicit statement of when to use it versus city_ranged_attack or other targeting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_policiesA
Social policies: what is adopted, what can be adopted right now (enum + name; the effect text is in reference("policies")), which branches are unlocked / unlockable, culture vs next cost. Use before choose_policy / unlock_policy_branch.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully describes the returned content (which branches are unlocked/unlockable, culture vs next cost) and implies a read-only query via "available," but never states read-only safety, side effects, or that effects live in a separate reference tool as the authoritative source. Adequate but incomplete for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense but front-loaded sentences: domain, then contents, then routing. Every clause carries information and nothing is padded. The nested parenthetical about the reference lookup makes it marginally heavier than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema, no-annotation tool, the description covers what is returned and where effect details live, which is what an agent needs to act. The main residual gap is behavioral safety, which the missing annotations leave unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description adds useful shape information about the response payload (enum + name for adoptable policies, effect text deferred to reference("policies")) that an agent cannot get from the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (social policies) and enumerates exactly what the call surfaces: adopted policies, currently adoptable policies, branch unlock status, and culture cost to next. It also points to reference("policies") for effect text, so an agent knows what this returns without confusing it with the effect-lookup tool. It does not explicitly contrast itself with the other available_* list tools, keeping it a touch below top marks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use before choose_policy / unlock_policy_branch" gives an explicit precondition and names the two downstream tools it feeds. That is clear context for invocation. It does not state when-not to use it or any exclusivity conditions, so it falls short of the 5-level routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_productionA
What this city can produce right now: units, buildings, projects, processes, with turns at the
current production rate, and for units/buildings the gold rush-buy price (gold; absent when the item
can never be bought, e.g. national wonders) plus can_buy (affordable AND purchasable right now ->
purchase_production). Use set_production(city_id, item) to queue one.
Each row carries gold (rush-buy cost, can_buy) and, when the faith tab offers it, faith + faith_can_buy;
faith_only rows (Missionaries, Great People, belief buildings) cannot be produced, only bought
with purchase_production(yield_type="FAITH"). A priced row with can_buy false carries buy_blocked
{reason, text}: gold (balance of cost), stacking (one per tile, with blocking_units), unbuyable,
engine (the greyed button's own sentence) or refused.
Each row carries the enum in item and, when it differs, the name the chooser button shows:
BNW renamed several (BUILDING_THEATRE is "Zoo"), and cities() prints that name, not the enum.
A puppet is refused (its AI picks production; producing says what) -- except for Venice, whose
puppets answer purchase_only: true with just the gold/faith rows the purchase screen offers.
| Name | Required | Description | Default |
|---|---|---|---|
| city_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it documents the returned fields (turns, gold, can_buy, faith/faith_can_buy, faith_only), the enumerated buy_blocked reasons (gold, stacking, unbuyable, engine, refused), puppet refusal behavior, the Venice purchase_only exception, and the enum-vs-display-name divergence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, and the dense field-level detail is all job-relevant for interpreting output. It is long but nearly every sentence earns its place; a small amount of repetition around gold/can_buy appears twice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain return values – and it comprehensively describes row fields, buy_blocked reasons, faith purchase paths, and edge cases (puppets, Venice). An agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter (city_id) at 0% schema description coverage, so the schema gives no semantic help. The description establishes city context implicitly ('this city can produce') but never explains the city_id argument itself, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'What this city can produce right now: units, buildings, projects, processes.' It also distinguishes its role from siblings by naming set_production (to queue) and purchase_production (to buy), so an agent can place it in the action flow without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to downstream actions ('Use set_production(city_id, item) to queue one', purchase_production for faith items), which implies usage. But it never states when to prefer this tool over alternatives like city_screen, purchase_cost, or cities() – no explicit when/when-not framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_researchA
Techs I can research right now (prereqs met). current marks the one already selected;
progress is the science already stored in a tech (shown whenever it is nonzero).
unlocks is the tech-tree button row for this seat: our units and buildings (not another
civ's uniques), revealed resources, and the ability the button names (embark, ocean, embassy).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the payload semantics (current marker, nonzero progress, what unlocks covers, and the important 'our units and buildings, not another civ's uniques' scoping). It never states the operation is read-only or side-effect free, which for an unannotated tool is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by compact field explanations. It is dense with domain jargon ('seat', 'button row', 'embark, ocean, embassy') but every sentence carries information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 usefully doubles as documentation of the returned fields. For a zero-parameter listing tool this is close to complete, though it could note that calling it has no side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: 'Techs I can research right now (prereqs met).' It makes clear this is a filtered availability listing rather than the full tech tree, though it never names the siblings (tech_tree, set_research, available_production) it should be distinguished from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'prereqs met' and 'right now' imply the condition for calling it, but there is no explicit when-to-use statement and no routing to alternatives like tech_tree or set_research. The agent must infer that this is the option-enumeration step before choosing research.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_spy_citiesA
Cities a given spy (agent_id, from spies()) could be sent to right now -- my own cities (counter-intel)
and others' (steal tech / set up a future coup). Feeds move_spy. potential is the espionage screen's
base potential: for a foreign city, how much there is to steal; for my own, how exposed it is to theft;
"unknown" until a spy has had that city under surveillance.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it explains the meaning of the returned `potential` field in both directions (stealable vs exposed) and discloses the 'unknown' state until a spy has surveilled the city. It does not mention turn-timing rules beyond 'right now' or any failure modes, keeping it short of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, and the second sentence, while long, is entirely about return-value semantics rather than filler. It is dense but almost every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 1-param, no-output-schema, no-annotation tool, the description is nearly self-sufficient: it conveys what comes back, what the key field means, and which tool consumes the result. A brief note on freshness/turn scope would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there is one required param, so the description must compensate; it does by identifying agent_id as a spy id sourced from spies(). It does not state the id's type/range or error behavior on an invalid id, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: which cities a given spy could be sent to right now, and splits them into two actionable categories (own cities for counter-intel, foreign for steal tech/coup). It also names the sibling it feeds (move_spy), which lets an agent distinguish it from move_spy, spies, and stage_coup without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Cities ... could be sent to right now' plus 'Feeds move_spy' clearly establishes the context and the downstream call, and '(agent_id, from spies())' points to the prerequisite tool. It stops short of explicit when-not guidance or naming alternatives to compare against, so a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_trade_routesA
Valid trade-route destinations for a specific trade unit (caravan/cargo ship) right now, with the
trade_type to pass into establish_trade_route. Yields are PER TURN: gold/science/food/production are
what my end receives, *_them what the destination receives (an internal food/production route delivers
to the destination city, so read food_them/production_them for those). Religious pressure, when the
chooser would print it, is from_religion/from_pressure and to_religion/to_pressure.
kind = international|food|production. detail="full" adds details, the gold and science hover behind
each row (the same numbers, itemised: base, buildings, resources, river; a paragraph per destination).
A list means there are destinations; when there are none it is an object instead, saying why -- a route
starts inside one of my own cities, so a unit in the field gets the nearest one to walk to.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | summary | |
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does unusually well: it discloses that yields are PER TURN, decodes the *_them field pairs, explains the food/production destination quirk, describes the list-vs-object return shape and why (no destinations => object with a reason), and specifies kind/detail behavior. It omits read-only confirmation and any error/permission caveats, so not quite a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the purpose and the establish_trade_route link come first, then field semantics, then the empty-result case. Nearly every clause carries information, though the run-on phrasing and field-pair explanations push it toward the verbose side.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex query tool with no output schema, the description explains the return values thoroughly enough to interpret them. Remaining gaps (unit_id meaning, pagination/limits, what detail='summary' vs other strings do) are minor given the depth already provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does explain the detail parameter ('full' adds `details`, the itemised gold/science hover) well, but unit_id is only implied, and the kind enum values shown are part of the output, not input parameters. Partial compensation for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (valid trade-route destinations) scoped to a specific unit (caravan/cargo ship) at a specific time ('right now'), and names the sibling it feeds into (establish_trade_route). An agent can distinguish it from trade_routes and establish_trade_route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Effectively tells the agent this is the prerequisite lookup before establish_trade_route by saying the trade_type is what to 'pass into establish_trade_route.' It also covers the empty-result case and the 'route starts inside one of my own cities' subtlety. Lacks an explicit when-not-to-use or a direct comparison to sibling trade_routes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
available_unit_actionsA
Legal unit-panel actions for this unit right now (missions, tile builds on ITS plot, commands,
promotions). Call this before unit_mission. Move-to is a separate tool (move_unit). Does not select
the unit or pan the camera. For Workers/Work Boats also returns nearby_builds: plots within 2 tiles
that still need work (unimproved, or pillaged) with the builds legal there -- move_unit onto one, then
unit_mission(MISSION_BUILD, build=...). build_info adds the unit-panel turns and yield_delta for each
build. A build issued with 0 moves left starts next turn. ranged_targets includes combat strength
and expected damage; air previews include retaliation and a warning about interception.
Melee previews include fire_support_damage in damage taken and its effect on damage dealt.
promotions are the chooser's own rows -- promotion (pass this to choose_promotion) and name;
what each does is in reference("promotions"). An action row's help is only the line the panel
computes for this unit (upgrade target and price, scrap gold, golden age length, paradrop range);
the standing sentence for every action is in reference("actions").
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and delivers: it states it does not select the unit or pan the camera (side-effect clarity), and discloses return-shape and quirks such as a build with 0 moves starting next turn, air previews including retaliation/interception warnings, melee fire_support_damage effects, and where `help` vs the standing sentence comes from.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence and subsequent sentences each add concrete value (routing, build workflow, preview contents, promotions/help sources). It is dense and long, but largely earns its length given the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex game-state query with no output schema and no annotations, the description supplies the missing return-value detail (nearby_builds, build_info, ranged_targets, promotions, help) and correct follow-up calls. Nothing an agent needs to invoke it correctly appears to be absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, but it says only 'for this unit right now', implicitly making unit_id the target unit. It spends far more text on output fields than on the single input parameter, leaving the parameter's meaning minimally inferred rather than stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb-and-resource statement ('Legal unit-panel actions for this unit right now') and enumerates the categories (missions, tile builds, commands, promotions). It also draws a clean boundary by naming move_unit as the separate tool for movement, so an agent can distinguish it from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing ('Call this before unit_mission') and an alternative ('Move-to is a separate tool (move_unit)'), plus a concrete workflow for Workers/Work Boats (move_unit onto a plot, then unit_mission(MISSION_BUILD, build=...)). It lacks guidance on when not to use it versus broader siblings like units or todo_actions, but the routing is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
briefingA
My turn in one compact read, for deciding and for recovering after a context reset: what I must do, what
changed, and what the board looks like. decisions is every mandatory item, never cut -- units needing
orders, promotions, cities with nothing to build, research unset, an incoming deal, a stolen tech, decision
popups, or the blocker -- each with the tool that clears it. warnings are facts that do not block (alerts,
expiring deals / friendships / allies); opportunities idle caravans and spies, free route slots.
changes since the baseline (my previous briefing of this game and seat, kept beside my notebook):
empire totals {was, now}, cities and units new / gone, events from the game's log (its own cursor:
turn_digest keeps its own). empire; cities (only those worth a look, with why); units (totals,
ongoing, attention, damaged); threats (visible hostiles within 4 plots of a city or 2 of a unit, nearest
first; distance only, no odds; ones already briefed are marked seen); camps; civ_rules (my leader's
trait text, on a first briefing or since="turn"); notes (new since my last briefing or finish_turn;
notes="all" the latest limit); assignments and orders when I have any. While a gate is up only gate
comes back (withheld).
Every list but decisions stops at limit (default 8, max 50) with omitted and more naming the tool
that shows the rest. since="turn" lists every event after my previous turn ended: use it after a context
reset. detail="full" gives every field of every row. Five game reads; nothing another seat can see is
read. Every key in detail: how_to_play("briefing").
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| notes | No | auto | |
| since | No | previous | |
| detail | No | compact |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the gate/`withheld` behavior, that `decisions` is never truncated, that every other list caps at limit (default 8, max 50) with `omitted`/`more` pointers, and the read-scope constraint ('five game reads; nothing another seat can see is read'). It omits error/failure behavior and performance characteristics, so it is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the purpose and almost every clause carries information, but it is delivered as long semicolon-chained run-ons rather than a structured list of the returned keys, making it harder to parse than it needs to be. No filler, but the density hurts scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the full return surface key-by-key (decisions, warnings, opportunities, changes, empire, cities, units, threats, camps, civ_rules, notes, assignments, orders), plus the gate case and where to find field documentation. Nothing material for calling it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does: limit gets a default and max, since="turn" is defined against the previous turn boundary, notes is explained for its 'all' value and against the last briefing/finish_turn, and detail="full" is described. The default notes="auto" behavior and the default since="previous" semantics are not spelled out, leaving one real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a clear verb+resource: a compact per-turn read for deciding and for recovering after a context reset, enumerating what it returns (decisions, changes, board state). It also differentiates from at least one sibling by noting turn_digest keeps its own cursor. The phrasing is idiosyncratic and dense, so the purpose takes work to extract, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the two motivating situations explicitly ('for deciding' and 'recovering after a context reset') and reinforces the reset case with 'since="turn" ... use it after a context reset'. It also discloses the gated case where only `gate` returns. However, it never names an alternative tool to use instead in a given situation, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_city_plotB
Buy plot (x, y) for this city for gold. city_screen lists buyable plots with buy_gold.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| city_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the gold cost and the coordinate-based purchase, but does not explain permissions, failure cases, irreversibility, or what changes in the game state after purchase.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. The action and cost are front-loaded, and the supporting reference to city_screen follows naturally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema mutation tool with three undocumented parameters, the description is minimally adequate. It conveys the purchase action and where to find valid plots, but omits enough behavioral and return context that an agent may still need to infer or discover important details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It clarifies that x and y are plot coordinates and that the city is identified by city_id ('this city'), but it adds no format, range, coordinate-system, or validation details beyond the parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Buy plot (x, y)' with city and gold cost. It distinguishes the action from the informational sibling city_screen by describing the purchase itself, though it does not differentiate from other purchase-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a prerequisite by stating that city_screen lists buyable plots with buy_gold, which tells the agent where to find valid coordinates. However, it does not explicitly state when to use this tool versus alternatives, nor does it give when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_orderB
Close an open order as cancelled (note: why). The standing move it had issued is dropped, so the unit stops where it is; a build or fortify already under way is left alone. Usable while it is not my turn.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it explains that the standing move is dropped, the unit stops where it is, and ongoing build or fortify is left alone. It does not discuss reversibility or permissions, but the consequences of cancellation are clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and stays compact across three sentences. The parenthetical '(note: why)' is slightly awkward but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, it provides useful behavioral context and turn timing. However, it omits how to obtain the required order_id and does not help route between the many order-related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It adds meaning only for the optional note parameter ('note: why'), while the required order_id is left without any description, format, or sourcing guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Close an open order as cancelled.' This clearly identifies the operation, but it does not distinguish itself from sibling tools like orders, give_order, or resume_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one usage condition: 'Usable while it is not my turn.' However, it gives no explicit guidance on when to cancel versus resuming or issuing orders, and no alternatives are named despite many related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_ideologyA
The policy screen's Switch Ideology button: adopt the preferred ideology public opinion pushes toward, at the cost overview().public_opinion.switch_cost shows (anarchy turns, tenets kept). Refused while the button is grey (no public-opinion unhappiness).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and discloses key effects: adopting the preferred ideology, paying the cost shown in overview().public_opinion.switch_cost, anarchy turns, tenets kept, and refusal when the button is grey. It still leaves some behavior implicit, such as what happens to the previous ideology beyond tenet retention.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its cost/condition. Every clause adds relevant information and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter game action with no output schema, the description supplies the essential context: what it does, its cost, and when it is refused. It could be slightly more complete by explaining how to verify success or what changes after the switch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so per the scoring baseline the schema cannot require additional parameter documentation. The description appropriately does not invent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: adopting the preferred ideology that public opinion pushes toward, tied to the policy screen's Switch Ideology button. It is clear this is a switch action rather than initial ideology selection, though it does not explicitly name the sibling tool choose_ideology for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a condition for refusal — the button is grey when there is no public-opinion unhappiness — which implies when the tool is usable. However, it does not explicitly compare this tool to alternatives like choose_ideology or available_policies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_specialistA
Add (add=true) or remove (false) one specialist in a BUILDING_* from city_screen. Disables automatic specialist assignment, like clicking a slot. Verifies the resulting count.
| Name | Required | Description | Default |
|---|---|---|---|
| add | Yes | ||
| city_id | Yes | ||
| building | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose two non-obvious behaviors: that the call disables automatic specialist assignment (a persistent side effect, not just a toggle) and that it verifies the resulting count. It still omits permission requirements, behavior on an invalid or full slot, and error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler; the critical add/remove semantics and the side effect come first. Minor phrasing awkwardness ('like clicking a slot') costs a little, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no output schema and no annotations, the description covers the core action, its side effect, and its verification, which is adequate. It stops short of documenting error cases, cost, or what the verified count result looks like, leaving an agent to discover those by trial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does explain the least self-evident parameter by mapping add=true to add and false to remove, plus clarifying that building refers to a BUILDING_* identifier. city_id is left to inference, but it is unambiguous from the name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb pair (add/remove) and a specific resource (one specialist in a BUILDING_* from city_screen), which is far more concrete than a bare tool name. It implicitly contrasts with automatic assignment but never names the sibling set_auto_specialists, which would have sharpened differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent the toggle semantics (add=true to add, false to remove) and implies this is the manual-counterpart to automatic assignment, but gives no explicit when-to-use/when-not guidance or named alternative such as set_auto_specialists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_working_plotA
Toggle whether this city works plot (x, y). Same as clicking the tile in the city screen. Forced-worked tiles stay locked until clicked again. Puppets refuse.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| city_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral load and does so reasonably: it explains the toggle semantics, that forced-worked tiles stay locked until clicked again, and that puppet cities refuse the action. It omits failure modes (e.g. invalid plot, already-owned tile) and any return/confirmation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action followed by the analogy and edge-case rules. Every sentence carries information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle tool with no output schema, the description covers the essential action and key edge cases (forced tiles, puppets). It is still incomplete on parameter validity and on what the result signals, which matters given zero schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that x and y are plot coordinates belonging to the target city, which adds real meaning over bare integer parameters, but gives no ranges, validity rules, or confirmation that city_id must be the controlling city.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: toggling whether a city works a given plot (x, y), with the clear analogy of clicking a tile in the city screen. An agent can distinguish it from plot-related siblings like buy_city_plot, though it does not name an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The city-screen analogy and the 'puppets refuse' note imply usage context, but there is no explicit 'use this when / use X instead' routing against siblings such as city_screen or buy_city_plot. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_archaeologyC
Confirm a choice ID at the completed dig's x,y from archaeology_options. Verifies resolution.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| choice | Yes |
TDQS
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 says 'verifies resolution' but doesn't describe what happens on success/failure, whether this is a committed action or reversible, or what permissions/state are required. For a 3-param mutation-style action with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core action is front-loaded. The brevity is efficient, though it may be too terse for the complexity of the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and 0% schema description coverage, the description should carry more weight. It provides only a minimal pointer to archaeology_options and coordinates, omitting workflow context, return behavior, and error conditions needed to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only explains that 'choice' refers to a choice ID from archaeology_options and that x,y are coordinates. It doesn't clarify the valid range of choice, coordinate conventions (tile vs pixel), or units, leaving the schema's bare integer types entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Confirm a choice ID') tied to an 'archaeology_options' resource, which gives an agent a decent sense of purpose. However, it's somewhat vague about what 'confirming' actually means in gameplay terms (selecting an artifact? resolving a dig?) and doesn't clearly differentiate from the sibling archaeology_options tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'at the completed dig's x,y' implies a precondition (the dig must be complete), but there's no explicit when-to-use guidance or mention of the sibling 'archaeology_options' as the source of the choice ID. The agent is left to infer the workflow order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_city_captureB
Decide a captured city: choice = liberate | annex | puppet | raze (only those city_capture_options lists).
| Name | Required | Description | Default |
|---|---|---|---|
| choice | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals the four outcomes but says nothing about their consequences (e.g. that raze destroys the city), whether the choice is irreversible, or what permission/state is required. For a consequential decision tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the action and the enumerable choices. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and one required param, the description is minimally adequate: it names the action and the legal values but omits the consequences of each option and any ordering relative to city_capture_options. It is enough to invoke but thin on the ramifications of the choice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter has no enum defined, so the description meaningfully compensates by listing the valid values (liberate | annex | puppet | raze). The caveat that only the values city_capture_options lists are legal adds useful constraint, though it defers the authoritative list to the sibling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('decide') and resource ('a captured city') and enumerates the possible choices, so the agent knows this commits one of four outcomes. It implicitly contrasts with the sibling city_capture_options by noting the choices come from that list, though it doesn't spell out the relationship directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('decide a captured city') and it points to city_capture_options as the source of valid values, which hints the agent should consult that first. However there is no explicit when/when-not guidance or statement of prerequisites/ordering beyond the parenthetical reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_faith_great_personC
Take one unit type from faith_great_person_options (it appears in the capital or holy city).
| Name | Required | Description | Default |
|---|---|---|---|
| unit | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It adds only the locational detail that the great person appears in the capital or holy city. It does not disclose whether the choice is irreversible, what resource or pool it consumes, what permissions are needed, or what the result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is appropriately sized for a one-parameter selection tool, though the parenthetical could be folded more cleanly into the main clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-param selector with no output schema and no annotations, the description covers the bare minimum: what to pass and where the options come from. It omits the consequence of the action and any preconditions, leaving the agent slightly under-informed but able to call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single 'unit' parameter. It partially does by indicating the value should be one entry from faith_great_person_options, which tells the agent where valid identifiers come from, but it gives no format, type, or example of the identifier itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a verb ('take') and points at the source of valid values (faith_great_person_options), which helps tie it to its sibling options tool. However, the phrasing 'one unit type' is imprecise for a Great Person selection tool and never states the effect of choosing (spawning the great person in the capital/holy city). It is distinguishable from siblings only via the referenced options tool, not by an explicit statement of what the tool accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Sort of implies the prerequisite that faith_great_person_options must be consulted first, since the value is taken from that list. There is no explicit when-to-use vs when-not, no mention of alternatives like choose_free_great_person, and no note about timing or turn conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_free_great_personA
Claim a free Great Person, e.g. unit="UNIT_SCIENTIST". Only valid while turn_status shows ENDTURN_BLOCKING_FREE_ITEMS (e.g. right after completing the Liberty policy tree).
| Name | Required | Description | Default |
|---|---|---|---|
| unit | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses the state gate (ENDTURN_BLOCKING_FREE_ITEMS), but says nothing about what happens on an invalid unit value, whether the claim is irreversible, or any permission/error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and then the gating condition. No filler, though the parenthetical example is slightly expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-annotation, no-output-schema tool, the description supplies the essential action, an argument format, and the critical precondition. Only the set of valid unit values and failure behavior are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single 'unit' parameter, so the description must compensate. It provides a format example (unit="UNIT_SCIENTIST"), which is genuinely useful, but does not enumerate valid values or point to where the list of claimable Great People can be found.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Claim a free Great Person'. It is distinguishable from siblings like free_great_person_options and choose_faith_great_person by the 'free' + Liberty-policy precondition, though it never names those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit activation condition: only valid while turn_status shows ENDTURN_BLOCKING_FREE_ITEMS, with a concrete example (after completing Liberty). It does not, however, tell the agent to inspect free_great_person_options first or what to do when the state does not hold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_goody_hutB
Take one ruins reward from goody_hut_options, e.g. goody="GOODY_CULTURE".
| Name | Required | Description | Default |
|---|---|---|---|
| goody | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'Take one ruins reward' but does not disclose whether the choice is irreversible, what happens to unselected options, whether it consumes a resource, or what the response looks like. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler; the example is embedded efficiently. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with no annotations and no output schema, the description gives just enough to find the valid input source (goody_hut_options) and an example. It omits behavioral consequences and does not list valid values, so an agent must rely on the sibling tool to complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds a useful example value and points to goody_hut_options as the source of valid strings, but it does not enumerate allowed values or explain the string format beyond the example. It partially compensates, not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Take') and resource ('one ruins reward'), and identifies the sibling tool goody_hut_options as the source of the reward. It is clear enough to distinguish from other choose_* siblings, though it could state more explicitly that it selects one of the options returned by goody_hut_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call this after goody_hut_options and pass a valid goody string. It does not explicitly state when not to use it, nor does it name alternatives, but the sibling reference provides contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_ideologyA
Choose the empire's ideology when ENDTURN_BLOCKING_CHOOSE_IDEOLOGY is up (3 Factories or the Modern
era): branch is POLICY_BRANCH_FREEDOM, POLICY_BRANCH_ORDER or POLICY_BRANCH_AUTOCRACY. Irreversible
short of a revolution. Other civs' ideologies are public (their choice matters for ideological
pressure/unhappiness). Returns ideology (confirmed) and free_tenets to spend via choose_policy.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and largely meets it: it discloses the enabling condition, that the choice is irreversible, that other civs' ideologies are public and drive pressure/unhappiness, and the return payload. It does not describe what each branch actually grants, but the consequential behavioral facts are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, followed by trigger, valid values, consequence, and returns in one dense but non-redundant passage. Slightly packed with parentheticals, but every clause contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, irreversible game decision with no output schema, the description covers trigger, legal values, irreversibility, downstream consequences, and the return values plus the follow-up tool (choose_policy). Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema declares `branch` as a bare string with no enum, so the description's enumeration of POLICY_BRANCH_FREEDOM / ORDER / AUTOCRACY is the only place the valid values exist. It adds the essential meaning but does not explain what each branch entails.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Choose the empire's ideology') and pins the exact game state that enables it. An agent can distinguish this from change_ideology and choose_policy without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when ENDTURN_BLOCKING_CHOOSE_IDEOLOGY is up (3 Factories or the Modern era)') and notes irreversibility 'short of a revolution', which implicitly routes later changes to change_ideology. It never names that sibling outright, so the alternative is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_maya_bonusC
Choose an available UNIT_* from maya_options (unit="UNIT_PROPHET", ...) and verify the reward was consumed.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It implies a selection that consumes a reward, but never states permissions, whether the choice is permanent, what the reward actually is, or what side effects occur - only a vague 'verify' note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, but the parenthetical example and the dangling 'verify the reward was consumed' clause make it clunky and front-load the mechanic less cleanly than it could.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter action tool with no annotations and no output schema, the description should at least explain what a 'maya bonus' selection does and what happens after. It leaves the agent guessing about the consequence of the choice and the meaning of the verification step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage and no enum, the description does add value by revealing the value pattern ('UNIT_*'), an example ('UNIT_PROPHET'), and the source of valid values (maya_options). However it does not explain the semantics of the parameter beyond that format hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Choose' plus the resource 'an available UNIT_* from maya_options' and the sibling reference 'maya_options' give some differentiation, but the trailing 'verify the reward was consumed' blurs whether that is the tool's behavior or an instruction to the caller, leaving the purpose only vaguely grasped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Pointing the agent at maya_options implies a prerequisite (list first, then choose) and hints at where valid values come from, but there is no explicit when-to-use, no exclusions, and no routing against the many other choose_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_policyB
Adopt a social policy, e.g. POLICY_TRADITION, within an already-unlocked branch.
| Name | Required | Description | Default |
|---|---|---|---|
| policy | Yes |
TDQS
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 does disclose a real gating condition (the branch must already be unlocked), which is useful behavioral context, but it says nothing about reversibility, cost, or whether adopting replaces an existing policy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the action front-loaded and the constraint appended. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter action tool with no annotations or output schema, the description covers the core action and a precondition. However, it omits the source of valid policy values, which is the key piece an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the sole 'policy' parameter is undocumented in both schema and description. The example value POLICY_TRADITION hints at the expected string format, but valid values and constraints remain unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (adopt) and resource (social policy), with an example value (POLICY_TRADITION) and a scope constraint (an already-unlocked branch). It is distinguishable from siblings like available_policies and unlock_policy_branch, though it does not name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'within an already-unlocked branch' implies a precondition, but the description never tells the agent to enumerate valid options via available_policies first, nor when to prefer choose_ideology or change_ideology. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choose_promotionC
Choose an earned promotion, using its PROMOTION_ name.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes | ||
| promotion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It hints that the promotion must be 'earned' and that a PROMOTION_ name is required, but it does not disclose side effects, reversibility, or what happens after choosing. This is insufficient for a likely state-changing action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words, which is good. However, it is so terse that it omits necessary detail rather than achieving useful conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two required parameters, no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It should explain both parameters and the behavioral consequences of choosing a promotion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It partially explains the 'promotion' parameter by mentioning its PROMOTION_ name format, but it says nothing about 'unit_id' or how the two parameters relate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Choose') and resource ('earned promotion'), making the basic action clear. It does not distinguish itself from the many other 'choose_*' sibling tools beyond the resource name, but an agent can still understand the core operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as available promotions or other choose_* tools. The phrase 'earned promotion' implies a prerequisite but does not explain the context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
citiesA
My cities: population, yields, current production and turns left, growth, happiness.
growth is "growing" (then growth_turns is present), "stagnant" (food_surplus 0 -- typical while
empire happiness is negative, which throttles growth) or "starving" (negative surplus, will lose pop).
building_maintenance / connection_gold are the Economic Overview per-city expense/income rows
(omit when 0). blockaded / wltkd_turns are the city-banner blockade and We Love the King timer.
Open one city with city_screen(city_id) for buildings, specialists, worked tiles,
queue, and focus.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it explains growth statuses, when growth_turns appears, when expense/income rows are omitted, and what blockaded/wltkd_turns represent. It does not explicitly state read-only behavior or absence of side effects, but the informational nature is clear from the content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the resource and returned fields, then adds concise field-semantics notes and a single sibling handoff. Every sentence contributes directly to understanding the output or when to use the alternative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description supplies the missing return-value context: it names the key city attributes, explains conditional fields, and points to city_screen for detail. That is complete enough for an agent to call this zero-parameter overview tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. Per the rubric, a zero-parameter tool has a baseline of 4 even when the description adds no parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource and scope explicitly: 'My cities' with population, yields, production, growth, happiness, and other city-summary fields. It also distinguishes itself from the sibling city_screen by directing detailed per-city inspection there, so an agent can tell the two apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly routes detailed city inspection to city_screen(city_id) and implies this tool is for a broad overview. The when-to-use condition is easy to infer, but there is no explicit 'use this when' or exclusion statement beyond the sibling handoff.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city_capture_optionsA
When pending_popups shows BUTTONPOPUP_CITY_CAPTURED: the plunder, and each choice the popup offers (liberate / annex / puppet / raze) with its unhappiness change and the warmonger warning from the button tooltip.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It usefully enumerates the returned content (plunder, choice list, unhappiness deltas, warmonger warning), but never states that it is a read-only inspection with no side effects, nor what happens if the popup is not in the expected state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the gating condition before the payload. The parenthetical list of choices and modifiers is information-dense but readable; nothing is wasted, though the sentence is slightly overloaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and zero parameters, the description is the only source of information and it does explain the shape of what will be returned. It is adequate for a simple read-only popup-inspection tool; only the absence of a follow-up action reference and error-state behavior keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case per the rubric. There is no parameter ambiguity to resolve, and the schema confirms an empty argument object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool surfaces: the plunder, the four capture choices (liberate/annex/puppet/raze), each option's unhappiness change, and the warmonger warning. It implicitly distinguishes itself from the sibling action tool choose_city_capture by describing an inspection result rather than a decision, though it never names that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger condition ('When pending_popups shows BUTTONPOPUP_CITY_CAPTURED'), which tells the agent precisely when this tool is relevant. It stops short of naming the alternative action tool (choose_city_capture) for actually making the choice, so the when-vs-alternatives guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city_ranged_attackA
Ranged attack from a city onto plot (x, y). See available_city_strikes first. Does not select the city or pan/flip the camera.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| city_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses some side-effect information ('Does not select the city or pan/flip the camera'), but omits critical attack consequences such as whether it is destructive, whether it consumes the city's ranged attack, target validity conditions, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences, front-loaded with the core action and followed by prerequisite and side-effect notes. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three required parameters, no schema descriptions, no annotations, and no output schema, the description leaves important gaps. It covers the basic action and a prerequisite, but not parameter semantics for city_id, attack outcomes, or failure conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three required parameters. The description clarifies that x and y are plot coordinates, but it does not explain the role of city_id or provide format or range details for any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Ranged attack') and resource ('from a city onto plot (x, y)'), making the action unambiguous. It implicitly distinguishes itself from the prerequisite listing tool by naming available_city_strikes as a separate step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear prerequisite guidance: 'See available_city_strikes first.' This tells the agent when to use the tool relative to its sibling. It lacks explicit when-not conditions or alternative tools, 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.
city_screenA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
city_state_actionB
Press one city-state screen button. action: pledge | revoke_pledge | bully_gold | bully_unit | declare_war | make_peace. Refused with the current state when the screen would not offer it.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden. It usefully discloses a real behavioral trait — the call is refused with current state when the screen would not offer the action — which is genuine value. But it says nothing about the consequences of destructive branches like declare_war/bully_gold or permission/precondition requirements beyond the generic refusal note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core purpose followed by the action enum and the refusal caveat. Efficient with minimal waste, though the action list could be formatted for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation dispatcher with no annotations and no output schema, the description covers the action vocabulary and refusal behavior but omits per-action consequences and the meaning of player_id. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does list the valid 'action' values that the schema lacks (a real gain), but 'player_id' is left entirely unexplained — it is unclear whether it refers to the human player or the target city-state, which is a meaningful ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (press) and resource (city-state screen button) and enumerates the six concrete actions, so the agent knows it is an action-dispatcher for city-states. However it does not differentiate itself from the similarly named sibling 'city_state_actions' or from standalone tools like 'make_peace'/'declare_war' whose actions it duplicates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance and no routing to alternatives. The action enumeration implies context, but the agent cannot tell from the description whether to call this versus the 'city_state_actions' sibling or the dedicated 'make_peace'/'declare_war' tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city_state_actionsC
The city-state screen beyond gifts: influence, quest_list (structured: type, turns_left, kill-camp
x/y when that camp is revealed, contest scores), plus the same quest tooltip text as quests. Whether I
can pledge / revoke protection, demand tribute (gold amount, or a Worker; details explains the strength
check), declare war, or make peace.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It adds useful detail (kill-camp x/y only when the camp is revealed, tribute paying gold or a Worker, that `details` explains the strength check), which is real beyond-schema context. But it never states whether the tool is read-only or mutating, nor any permission or side-effect behavior, leaving a key gap for a tool whose name implies mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single dense sentence is not front-loaded with a clear statement of purpose and instead leads with a cross-reference ('beyond gifts') before burying the actual content list. Internal field names (quest_list, details) and sibling references add clutter without improving the opening.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does partially describe return content (influence, structured quest fields, contest scores, tribute strength check), which is valuable. But it omits the sole parameter and leaves the read-vs-write nature unresolved, so it is only partially adequate for a no-schema, no-annotation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter player_id is never mentioned, explained, or given format/scope meaning in the description. The description must compensate for the coverage gap but does not, so an agent learns nothing about the argument from either source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (the city-state screen) and enumerates the content it exposes (influence, quest list, protection, tribute, war/peace), but never uses a clear verb and blurs whether it reports availability ('Whether I can pledge') or performs these actions, despite the name suggesting 'actions'. It does distinguish itself from the sibling city_state_gifts by scoping to content 'beyond gifts'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'beyond gifts' implicitly routes the agent away from city_state_gifts and toward this tool for the rest of the city-state screen, and a sibling quests/quest_list relationship is implied. However, there is no explicit when-to-use statement, no conditions that select this over city_state_action or diplomacy, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city_state_bonusesC
Met city-state's trait/bonus and personality tooltips, current food/culture/faith/happiness/ science benefits, unit gift estimate, unique military unit and exported resources.
| Name | Required | Description | Default |
|---|---|---|---|
| minor_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only lists returned content. The phrase 'Met city-state's' faintly implies the target must already be met, but it never states that this is a read-only lookup, what happens if minor_id is unknown/unmet, or whether it has 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, but it is a dense comma-separated enumeration of return fields rather than a structured statement of purpose. Adequate but not well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what comes back, partially covering the return-value role. However, for an unannotated lookup it omits call preconditions and error behavior, leaving the definition only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter minor_id, and the description never explains that minor_id is the city-state identifier or what values it accepts. 'Met city-state's' is the only indirect clue, which does not compensate for the fully undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence enumerates the data the tool surfaces (trait/bonus tooltips, yields, unit gift estimate, unique unit, exported resources), which conveys the resource, but the verb is implicit and there is no differentiation from siblings such as city_state_gifts, city_state_actions, or relationship. An agent can infer it is an info/lookup tool but cannot cleanly separate it from adjacent city-state tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling to prefer for city-state gifts, actions, or relationship data. With many overlapping city-state tools in the list, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city_state_giftsA
Gold gift tiers and friendship for a met city-state. See minor_gold_gift to actually gift.
ally is what the city-state screen's ally tooltip shows: {us: true}, {none: true, to_become_ally},
or the current ally (named only if met) with to_become_ally = influence we still need to pass it.
Other majors' influence is not visible to a player and is not returned.
Each tier carries influence_after and makes_ally -- whether that gift actually takes the alliance,
or short_by how much it would miss the civ currently holding it.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
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 enumerates the `ally` tooltip variants ({us}, {none, to_become_ally}, or a named current ally), explains `to_become_ally` as remaining influence, and discloses a negative behavior (other majors' influence is not returned). This is meaningful behavioral context beyond what a bare schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the sibling alternative are front-loaded, and the remaining clauses are dedicated to explaining the return shape, which is warranted since there is no output schema. It is dense but each clause carries return-structure information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain return values, and it does: `ally` variants, per-tier `influence_after`/`makes_ally`, and the `short_by` fallback. The main gap is the undocumented player_id, but for the tool's return semantics the description is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter `player_id` is never mentioned in the description. For a low-coverage schema the description should compensate, but it adds no meaning about what player_id is or how it is used, leaving the parameter effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states the resource (gold gift tiers and friendship) and the target (a met city-state), and the second sentence disambiguates from the similarly-named sibling by routing the actual gifting action to minor_gold_gift. The verb is implicit (it is a query tool, not the gifting action), but the scope is clear enough that an agent can distinguish it from minor_gold_gift.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the alternative ('See minor_gold_gift to actually gift') and states the precondition that the city-state must be met. It gives clear context for when to reach for this tool versus the sibling, though it does not spell out a when-not-to-use case beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city_taskB
City-screen tasks: annex (a puppet), raze, or unraze. Annexed cities get resistance; raze burns one population per turn. cities()/city_screen already flag puppet/razing state.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| city_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful consequences: annex creates resistance and raze burns one population per turn. However, it omits whether actions are reversible, what permissions or preconditions apply, and what happens on failure, so disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the operations and followed by mechanical effects and a pointer to related state. Dense and largely waste-free, though the closing sentence is somewhat incidental.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no annotations, no output schema, and 0% parameter coverage. It compensates by supplying the action values and consequences, but the missing city_id semantics and lack of reversibility/permission detail leave gaps for a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It usefully enumerates the valid action values (annex, raze, unraze), effectively supplying the missing enum, but it says nothing about city_id or how to identify the target city.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (city) and the exact operations (annex, raze, unraze) it performs, which is more than a tautology. It distinguishes itself somewhat by noting it operates on the city screen and relies on state already flagged by cities()/city_screen, though it does not fully contrast against those sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by telling the agent that cities()/city_screen already flag puppet/razing state, hinting that those should be consulted first, but gives no explicit when-to-use or when-not-to-use guidance or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_assignmentA
Close an active assignment: outcome "completed" or "cancelled", with an optional note (why). Closed ones leave the briefing and stay readable with assignments(status="closed"). Usable while it is not my turn.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| outcome | No | completed | |
| assignment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does a fair job: it discloses the state transition (active → closed), that closed items leave the briefing but stay readable, and the availability window. It does not say whether closing is reversible or what side effects it has on the other party, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with the core action first and the state/availability consequences after. The mid-sentence quote placement and run-on second clause make it slightly less crisp than it could be, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with no annotations and no output schema, the description covers the essential behavioral facts an agent needs: what closing does, the allowed outcomes, the optional reason, and when it can be called. Return payload and irreversibility remain unaddressed, which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it supplies the domain of 'outcome' (completed/cancelled, which the schema does not enumerate) and clarifies 'note' as the reason for closing and optional. 'assignment_id' is left to inference but is self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Close an active assignment') and enumerates the outcome values ('completed' or 'cancelled') plus the optional note. It is clearly distinct from assign/amend_assignment and from the order-family siblings (cancel_order, resume_order), though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Usable while it is not my turn" gives the agent a concrete timing condition, and the description routes it to the right place to see closed assignments (assignments(status="closed")). It stops short of stating when closing is preferable to amending or simply leaving an assignment open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compareA
Your candidates side by side in one read, for a decision you are weighing; the facts, never a pick.
kind="production": city_id + candidates (up to 8 UNIT_/BUILDING_/PROJECT_/PROCESS_ types): can_produce or
why not, cost, stored, turns, gold / faith price with *can_buy, effects, conditional per-tile yields with
how many of this city's tiles qualify, estimated_change (formula in assumptions), maintenance, unique_replaces.
kind="research": up to 8 TECH types: status, cost, progress, turns, missing_prereqs, path_beakers and
path_turns_estimate for a locked one, unlocks.
kind="improvements": unit_id (a worker) + optional plots ([[x, y], ...]; default: plots within 2 that are
owned or hold a resource) + optional candidates (BUILD_ types): per plot yields_now, worked, city; per build
legal (or why), turns (work only), tile_change, empire_change when a city works the tile, removes /
chop_production, connects, maintenance. Fogged plots are not read. sort= a yield or "turns".
kind="trade": unit_id (a caravan or cargo ship in a city): every destination with what each end receives,
distance and hazard (visible hostiles and camps near it; never "safe"). sort= gold, science, food,
production, *_them or distance.
Every answer has context, sources, assumptions, n / returned and omitted with the arguments that fetch
the rest (limit, 1-20). detail="full" adds help text and the chooser's hover breakdown. Field by field:
how_to_play("compare").
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| sort | No | ||
| limit | No | ||
| plots | No | ||
| detail | No | summary | |
| city_id | No | ||
| unit_id | No | ||
| candidates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description still discloses meaningful behavior: it is a read-oriented comparison ('one read' and 'the facts, never a pick'), fogged plots are not read, answers include context/sources/assumptions/omitted items, and detail='full' adds help text. It does not explicitly state that the tool never mutates game state, but the read-only framing is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but the tool has four distinct modes and eight parameters, and the text is front-loaded and organized by kind. Most sentences add useful mode-specific detail, though the density could be reduced slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema coverage, the description is unusually complete: it covers all modes, inputs, defaults, output fields, assumptions, pagination/omitted behavior, and how to escalate detail. An agent has enough context to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry all parameter meaning, and it does: it defines every kind mode, explains sort options per mode, gives limit range 1-20, describes plots defaults, detail='full', and which parameters apply to city_id, unit_id, and candidates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear comparison purpose: 'Your candidates side by side in one read, for a decision you are weighing; the facts, never a pick.' It names the compared resources across four modes and explicitly distinguishes the tool from a recommendation engine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong mode-by-mode usage guidance, explaining when to use kind='production', 'research', 'improvements', or 'trade' and what inputs each mode expects. It does not explicitly name alternative sibling tools or when not to use compare, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
culture_overviewA
Culture-victory race (the Culture Overview screen): for each met major civ, how many civs it is Influential on out of how many it needs, its tourism, and its influence on every other major civ -- level (exotic .. dominant), percent, tourism per turn, trend, and turns_to_influential while rising. A civ you have not met appears as "unknown". Use it when a "Culture Victory Contender" alert names a rival.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the returned fields (level exotic..dominant, percent, tourism per turn, trend, turns_to_influential while rising) and an important edge case -- unmet civs appear as 'unknown'. It does not state that this is a side-effect-free read or note any performance/rate concerns, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and returned contents are front-loaded, then the usage trigger closes it out; there is no filler. The middle enumeration is dense but every clause adds distinct information about the screen's contents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and zero parameters, the description must describe the return payload itself, and it does so in detail -- including field semantics, the exotic-to-dominant scale, and the 'unknown' case for unmet civs. Nothing an agent needs to call and interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the rubric the baseline is 4; there is nothing for the description to clarify beyond what the empty schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the specific screen (Culture Overview) and the exact resource it reports: per met major civ, count of civs Influential on, tourism, and influence on every other major civ. It is clearly distinguishable from siblings like domination_progress, wonder_overview, and demographics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition -- 'Use it when a "Culture Victory Contender" alert names a rival' -- which is concrete and actionable. It does not name a competing tool or state when not to use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
culture_worksB
Culture Overview works tab: own buildings' occupied/empty Great Work slots, work tooltips,
theming rules/bonuses, city tourism breakdowns and tourism modifiers toward met rivals. swap is
the swap tab: ours per class (the work we put up and the pull-down's candidates) and theirs
(every met civ's offered writing/art/artifact). Writes: set_swappable_great_work, swap_great_works.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does imply read-only status by naming the separate write tools, which is genuinely useful disambiguation. Beyond that it says nothing about permissions, cost, or freshness of the data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the primary tab contents, but the run-on second half piles invented jargon (`ours`, `theirs`, 'pull-down's candidates') into a dense block that is hard to parse. Every sentence carries information, yet the structure is cramped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 convey what comes back, and it does enumerate the fields well. It is thin on how the `swap` view is actually reached given the tool exposes zero parameters, leaving a real ambiguity for an agent trying to trigger that variant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no argument semantics to clarify and the baseline is 4. The description instead spends its words on returned data shape, which is appropriate but not required here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (the Culture Overview works tab) and enumerates its contents: Great Work slots, work tooltips, theming rules/bonuses, and tourism breakdowns. It also distinguishes the `swap` variant and its `ours`/`theirs` keys. However, it never explicitly contrasts itself with the sibling culture_overview, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing line routes writes to set_swappable_great_work and swap_great_works, which usefully signals this tool itself is read-only. But there is no explicit 'use this when / not when' guidance and no comparison against culture_overview or great_person_progress for deciding which overview to open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
current_dealsA
Diplomacy Overview current deals: who, items, turns remaining until each expires. Refuses if a trade is already on the scratch table (answer incoming_deal first). Does not construct or propose anything.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden: it declares the tool is non-mutating ('Does not construct or propose anything'), discloses a refusal precondition tied to the scratch table, and names the fields returned. It gives a solid behavioral picture, though it omits any note on permissions or freshness of the deal data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core query stated first and the qualification/refusal behavior after. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 compensates by enumerating the return contents (who, items, turns remaining). For a read-only, no-arg tool this is nearly complete; only the refusal-handling path could be fleshed out further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the schema offers nothing to interpret and the baseline of 4 applies. The description correctly adds no spurious parameter detail for a no-arg query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific read action (listing current deals) on a specific resource, and enumerates the returned fields (who, items, turns remaining). The closing clause 'Does not construct or propose anything' explicitly separates it from sibling tools like propose_deal and negotiate_deal, so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the precondition ('Refuses if a trade is already on the scratch table (answer incoming_deal first)'), routing the agent to the incoming_deal sibling. Clear context for use, though it doesn't distinguish itself from trade_catalog or the deal-proposal tools beyond the negative statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
declare_warA
Declare war on a civ I have met. Irreversible for a while (can't make peace again immediately). Bypasses the leader-head screen entirely.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses irreversibility ('can't make peace again immediately') and that it skips the leader-head confirmation screen, but omits consequences (warmonger penalties, effects on other civs), any confirmation/return behavior, and permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses with the action and its main consequence front-loaded; every sentence carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an irreversible, no-annotation, no-output-schema mutation tool, the description covers the precondition and the key irreversible trait but leaves out downstream effects and the meaning of the sole parameter, so an agent still has gaps before invoking it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter player_id is never named or described. The phrase 'on a civ I have met' does imply the parameter identifies the target civilization, but the description adds no format or constraint details beyond that inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Declare war on a civ') with a precondition ('I have met'), which clearly separates it from the sibling make_peace. It does not explicitly name or contrast any sibling, so it falls short of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition 'a civ I have met' implies when the tool is applicable, but there is no explicit when-to-use guidance, no statement of when NOT to use it, and no pointer to alternatives like make_peace or war_consequences for related actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
demandA
The leader screen's Demand button: tell an AI leader to hand over items for nothing, through the
game's real screens (Demand -> table with only THEIR pocket -> DEMAND -> the leader's answer), then
close up and report accepted, reply and measured effects like propose_deal. items take
propose_deal's shapes and are all from_us:false (GOLD, GOLD_PER_TURN, RESOURCES, CITIES, OPEN_BORDERS,
ALLOW_EMBASSY...); pick from trade_catalog(player_id)'s them side. AI leaders only (a human seat has no
leader screen: propose_deal sends them a table), and the button is greyed at war (make_peace instead).
As in the stock game a refused demand is remembered against you by that leader; use it deliberately.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full behavioral burden and does well: it discloses the screen sequence, the diplomatic penalty for a refused demand, the war/AI-leader preconditions, and the return shape ('accepted', 'reply', 'measured effects like propose_deal'). It omits how `effects` are measured and whether the demand is reversible, so it falls just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph with the core action front-loaded; parentheticals are information-bearing rather than filler, though the density and stacked asides (war/AI-leader/from_us/catalog) make it harder to scan than a chunked split would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, annotation-free, output-schema-free diplomacy mutation, the description covers preconditions, execution path, item semantics, and return values. An agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it largely does for `items`: it names the shape source (propose_deal), the required `from_us:false` flag, and concrete types (GOLD, GOLD_PER_TURN, RESOURCES, CITIES, OPEN_BORDERS, ALLOW_EMBASSY) plus where to pick them (trade_catalog's `them` side). `player_id` is only implicitly defined as the target leader, leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('tell an AI leader to hand over `items` for nothing') and immediately distinguishes itself from propose_deal ('through the game's real screens (Demand -> table -> DEMAND -> answer)'). An agent can select this over the sibling trade/diplomacy tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not: AI leaders only ('a human seat has no leader screen: propose_deal sends them a table') and blocked at war ('the button is greyed at war (make_peace instead)'), each naming the alternative tool. It also warns to use it deliberately because refusals are remembered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
demographicsB
Demographics: our value/rank and public best, average and worst for population, food, production, gold, land, soldiers, approval and literacy. Unmet best/worst identities are masked.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 does disclose a meaningful behavioral trait beyond the schema: best/worst identities are masked when unmet, which tells the agent some fields may be withheld. However, it says nothing about read-only status, cost, caching, or update timing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the tool and its contents, followed by one short caveat sentence. The metric list is dense but every item earns its place by telling the agent exactly which stats come back.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no annotations, and no output schema, the description is the sole source of information, and it adequately covers what is returned plus the masking caveat. It could be stronger if it noted the read-only nature or how rankings are scoped (own civ vs. all known civs).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify and the baseline is 4. Schema coverage is 100% and the empty object is unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (demographics) and enumerates the exact metrics reported: population, food, production, gold, land, soldiers, approval, literacy, each with value/rank plus public best/average/worst. That is far more specific than a tautology, though it does not explicitly distinguish itself from sibling overview/status tools like 'overview' or 'turn_status'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. An agent must infer from the name alone that this is the read-only rankings/report tool rather than 'overview' or 'players'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
denounceB
Publicly denounce another civ. Worsens relations with them and their friends; cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses two key behavioral traits beyond the name — that relations worsen with the target AND their friends (third-party effects), and that the action is irreversible ('cannot be undone'). It omits permission/auth requirements, but for an irreversible diplomatic action this is strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and consequences appended. Every clause earns its place; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema, the description covers consequences and irreversibility adequately. The remaining gap is the lone parameter's meaning, which neither the schema nor the description pin down, leaving the agent unclear on how to specify the target.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — player_id has only a type and title. The description's 'another civ' loosely identifies the target, but says nothing about how to supply the player_id, whether it is the civ name, index, or ID, or where the agent obtains a valid value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Publicly denounce another civ.' This is distinct from siblings like declare_war, propose_friendship, and propose_deal. It stops short of explicitly contrasting those alternatives, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance. There is no mention of opting for declare_war, demand, or other diplomatic tools instead, nor any prerequisite for denouncing. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diplo_eventA
Escape hatch for any other diplomatic action not covered above (accept/decline a coop-war offer,
respond to a denounce request, agree to work with someone, etc). event is a FromUIDiploEventTypes
name, with or without its FROM_UI_DIPLO_EVENT_ prefix -- see docs/NOTES.md for the list. Read a
pending leader_message in turn_digest first to know what's being asked and what data1/data2 should be.
| Name | Required | Description | Default |
|---|---|---|---|
| data1 | No | ||
| data2 | No | ||
| event | Yes | ||
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the event-name convention and the dependency on reading turn_digest to determine data1/data2, but it says nothing about side effects, permission requirements, reversibility, or what happens with an invalid event, which is a notable gap for a mutating dispatcher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the escape-hatch purpose, then the event-name convention, then the workflow tip. Minimal waste, though the parenthetical example list is slightly long relative to the essential content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, 0%-coverage, no-output-schema dispatcher, the description is reasonably complete on intent and workflow but leaves the valid event vocabulary in an external file and never addresses player_id or return behavior, so an agent cannot fully self-serve from the definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains `event` well (a FromUIDiploEventTypes name, optionally with the FROM_UI_DIPLO_EVENT_ prefix, list in docs/NOTES.md) and gives context that data1/data2 depend on the pending message, but it defers valid values to an external document and says nothing about player_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description defines this as the catch-all 'escape hatch for any other diplomatic action not covered above' and gives concrete examples (coop-war offers, denounce responses, agreeing to work with someone), which distinguishes it from specific siblings like propose_friendship, denounce, and make_peace. The verb is inherently generic (a dispatcher), so it is not a 5, but an agent can tell it apart from the named diplomacy tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the selection condition clearly ('any other diplomatic action not covered above') and prescribes a workflow prerequisite: read a pending leader_message in turn_digest first to learn what is being asked. It does not spell out when-not to use beyond the 'not covered above' framing or name each alternative explicitly, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diplomacyB
Civs and city-states I have met: at war, score (majors), ally/friends (city-states). Unmet players are omitted.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load, and it does disclose the return content (war status, major scores, city-state ally/friend status) plus the omission rule for unmet players. However it says nothing about read-only nature (implied), ordering, or freshness, so it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence with no filler; the scoping rule is stated last. It is slightly telegraphic ('score (majors)'), which costs it the top mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless info tool with no output schema, the description sketches the returned categories but does not explain the format, what 'score' represents for majors, or how the foundation of unmet players interacts with the rest. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics for the description to cover; the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (civs and city-states I have met) and the states being reported (at war, score, ally/friends), so an agent can tell this is a diplomatic-status overview rather than a deal or event tool. It lacks an explicit verb like 'list' and doesn't name a sibling it is not, so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus siblings such as relationship, current_deals, players, or diplo_event. 'Unmet players are omitted' is a scope note about the result, not guidance about when to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disband_unitA
Disband (delete) one of my units -- the unit panel's Disband button. Irreversible. Frees its gold
maintenance and any strategic resource it consumes (e.g. an obsolete Swordsman holding Iron). Returns
effects.before/after with unit count and strategic_resources so the freed resource is measured.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely succeeds: it declares the operation irreversible and specifies the side effects (freed gold maintenance and strategic resources). It also discloses the return payload shape. It stops short of covering prerequisites or failure modes for this mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the verb and object, then the destructive warning, then the effect and return detail. Every sentence carries distinct information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive action with no annotations and no output schema, the description covers irreversibility, side effects, and the shape of the return value, which is most of what an agent needs. Only prerequisites and error behavior are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required unit_id parameter at 0% schema description coverage. The description only implies it identifies 'one of my units' and adds no format, sourcing, or validity detail beyond that. For a simple integer id this is adequate but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Disband (delete) one of my units') and ties it to a concrete UI affordance ('the unit panel's Disband button'). It is clearly distinguishable from siblings like upgrade_unit, move_unit, or unit_mission without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the outcome (frees gold maintenance and consumed strategic resources), which implies when it is useful, but it never states explicit when/when-not conditions or routes the agent to alternatives like unit_home_options or available_unit_actions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discussionA
What the open leader screen says: the leader, their mood, their speech, the response buttons (id + text) and, on a trade screen, the deal on the table; screen="greeting" is a plain first-meeting / war / peace message with nothing to decide. Call this whenever turn_status or wait_for_my_turn reports discussion_pending, then answer with respond_discussion(button_id), accept_deal / refuse_deal (trade screen), or dismiss_discussion (plain acknowledgement, no buttons).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and mostly does: it enumerates the return payload (leader, mood, speech, buttons with id+text, deal) and flags the special screen="greeting" case that yields nothing to decide. It does not explicitly state that calling is side-effect-free, but the read-then-branch framing makes the read-only nature clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences front-load what the tool returns before covering the branch cases and the follow-up routing. Every clause carries information, though the packing of button/deal/greeting details into one sentence makes it slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-annotation, no-output-schema tool, the description supplies the return shape and the decision routing that structured fields cannot. It is nearly complete; only an explicit statement of read-only/no-side-effect behavior is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema provides no argument semantics to compensate for; baseline 4 applies. The description's mention of screen="greeting" clarifies a value the caller will observe rather than an argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose: it reads the open leader/diplomacy screen and returns the leader, mood, speech, buttons and any deal on the table. It distinguishes itself from the action siblings (respond_discussion, accept_deal, refuse_deal, dismiss_discussion) by being the read that precedes them, though the bare name 'discussion' alone would not convey this.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ('whenever turn_status or wait_for_my_turn reports discussion_pending') and then routes to the exact alternatives for each outcome: respond_discussion(button_id), accept_deal/refuse_deal on a trade screen, dismiss_discussion for the no-button greeting case. When-to-use and which-tool-next are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dismiss_discussionA
Leave an AI leader's negotiation/demand/trade-offer screen (see wait_for_my_turn's discussion_pending)
without agreeing to anything. For a trade already on the table, prefer incoming_deal + refuse_deal.
Also closes a plain leader greeting (first meeting, echo of a war/peace just made), and every greeting
queued behind it (closed_count), stopping at a screen that needs an answer. When another leader is queued behind this one (several can wait at a turn start), the answer carries
still_pending: true, next (their screen, words, buttons and the deal on the table) and the gate it
raises: answer that one next, no discussion() read needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses bulk side effects (closes every greeting queued behind the current one, reported via closed_count), a stopping condition ('stopping at a screen that needs an answer'), and the shape of the pending-answer response (still_pending, next, gate). It does not say whether dismissing carries diplomatic consequences (relationship/attitude penalties), which is the main remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and alternative, and every sentence carries information. It reads as one dense paragraph with jargon ('the gate it raises', 'discussion() read needed') that costs some readability, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description compensates by documenting side effects and the fields returned in the multi-leader case (still_pending, next, gate), including the guidance that no discussion() read is needed afterward. For a zero-parameter tool this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema is complete by definition and no parameter semantics are needed. Baseline 4 applies; the description correctly spends no space on nonexistent inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('leave an AI leader's negotiation/demand/trade-offer screen without agreeing') with a clear scope, and explicitly distinguishes itself from the trade-handling siblings by naming incoming_deal + refuse_deal. An agent can separate this from discussion/respond_discussion/incoming_deal without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule ('For a trade already on the table, prefer incoming_deal + refuse_deal') plus the second use case (plain leader greetings, including queued ones). It also tells the agent what to do next when another leader is pending, so the when-to-use decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doA
Carry out a list of orders in one call, in order: [{"tool": "unit_mission", "args": {"unit_id": 7,
"mission": "MISSION_FORTIFY"}}, {"tool": "set_production", "args": {...}}, ...]. Each order is the named
tool with its own arguments and comes back with its own result under results (index, tool, result).
The first refusal (ok=false) stops the batch by default: the orders after it are listed under skipped,
since the state they were reasoned about is no longer certain; stop_on_refusal=false runs them all.
Not allowed inside: wait_for_my_turn, finish_turn, end_turn, load_*, lua, do. At most 40 orders.
An order may carry "action_id": a retried batch after a transport timeout then replays the results of
orders already carried out instead of repeating them (see the server instructions on action_id).
force=true takes the turn over from another client of this seat that still holds it (see end_turn).
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| actions | Yes | ||
| stop_on_refusal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does: it explains that the first refusal (ok=false) halts the batch by default, that remaining orders land in `skipped` because the assumed state is now uncertain, that stop_on_refusal=false overrides this, that action_id replays already-executed orders on retry after a transport timeout, and that force seizes the turn from another client holding the seat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and example, then ordered by importance (limits, refusal behavior, action_id, force). Every sentence carries information, though the two external cross-references (server instructions, end_turn) and stacked parentheticals make it denser than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch-dispatch tool with no annotations and no output schema, the description covers the return shape (`results` with index/tool/result, plus `skipped`), the failure model, size limits, and the replay protocol. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: `actions` is defined as an ordered list of named-tool-plus-args orders with an optional action_id, stop_on_refusal is defined with its default-off effect, and force is defined as taking the turn from another client. Only the raw JSON default values themselves are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Carry out a list of orders in one call, in order') and immediately shows the payload shape with a concrete example. This clearly distinguishes it from the many single-action siblings like unit_mission or set_production, which this tool batches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (batch ordered orders), explicit when-NOT (wait_for_my_turn, finish_turn, end_turn, load_*, lua, do are not allowed inside), and the exhaustion rule (at most 40 orders). It also routes the agent to end_turn for the force-takeover semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domination_progressB
Original capitals of met civilizations and their current holders; unrevealed coordinates and unmet holders are masked. Includes whether our team controls each capital.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose useful traits: masking of unrevealed coordinates and unmet holders, plus inclusion of team control flag. It doesn't clarify read-only nature explicitly, but 'progress' strongly implies a read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core content. Slightly heavy with clauses, but nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description is the sole source. It covers masking and control status but omits return structure or pagination considerations; adequate for a zero-param query but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the rubric the baseline is 4. Schema coverage is 100% and there are no params to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (original capitals of met civilizations, current holders, our control status) which is distinct from siblings like demographics or overview. The verb is implicit (a status/progress read), but the content is clearly scoped to domination victory progress.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus siblings such as overview or demographics. The description states what data it returns but offers no usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
end_turnA
End my turn. If something blocks it (unit needs orders, research/production choice), turn_status shows it.
Auto-quicksaves first by default (single-player only) -- cheap insurance against this game's frequent
ambient crashes; pass autosave=False to skip. Refused with turn_claim when another client of this seat
gave this turn's first order and is still at it (its pid and timings are in the answer): that client owns
the turn until 180 s pass without an order from it or its process exits; force=true takes it over.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| autosave | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden and delivers: default-on quicksave (single-player only), the turn_claim refusal condition with owning pid/timings, the 180 s idle window, and that force=true seizes ownership. This is exactly the behavioral context an agent needs before a mutating, potentially contested operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the primary intent, then layered with operational detail. The sentences are dense but each carries real information; the description is on the long side but avoids padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, yet the description covers blockers, the diagnostic sibling, default side effects, refusal semantics, recovery timing, and the override — everything needed to invoke correctly and interpret a refusal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it fully does: autosave is explained as default-true, single-player-only insurance, skippable via autosave=False, and force is explained as the turn-claim takeover switch. Both parameters gain meaning unavailable in the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource, 'End my turn,' and immediately scopes the operation by naming the blocker conditions (unit orders, research/production). However, it never addresses the close sibling 'finish_turn,' leaving the agent to guess which of the two terminates a turn — no sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: it may be refused, and it points the agent at turn_status to diagnose blockers. It explains the autosave default and how to skip it, plus the refusal/override path. It stops short of explicitly telling the agent when to prefer this over finish_turn.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enhance_religionA
Enhance my founded religion: belief4 = a follower belief, belief5 = an enhancer belief (available_beliefs), in the city at (city_x, city_y) = data1, data2 of the pending BUTTONPOPUP_FOUND_RELIGION (the holy city, where the Great Prophet stands); custom_name is ignored unless the game asks for one. Only valid when blocking_name is ENDTURN_BLOCKING_ENHANCE_RELIGION.
| Name | Required | Description | Default |
|---|---|---|---|
| city_x | Yes | ||
| city_y | Yes | ||
| belief4 | Yes | ||
| belief5 | Yes | ||
| religion | Yes | ||
| custom_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the popup/blocking precondition and that custom_name is ignored unless the game asks for one, which is useful mutation context. However, it does not state permissions, reversibility, or what happens if the blocking condition is not met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense but front-loaded sentence that starts with the action and then provides parameter mappings. It avoids filler, though the cryptic game terms and semicolon-separated clauses reduce readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no annotations and no output schema, the description covers the special popup precondition and most parameter roles. It still omits the meaning/format of the religion argument and the outcome of a successful or invalid call, leaving gaps an agent may need to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the six parameters. It maps belief4 to a follower belief, belief5 to an enhancer belief, and city_x/city_y to the holy city in the pending popup, and notes custom_name behavior. It leaves the required religion parameter and the popup data1/data2 mapping opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: enhancing a founded religion by assigning belief4 and belief5 in a particular holy city. It also ties the operation to the pending BUTTONPOPUP_FOUND_RELIGION, distinguishing the enhancement step from founding. It does not explicitly name found_religion as the alternative, so sibling differentiation is present but not fully explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear validity gate: only valid when blocking_name is ENDTURN_BLOCKING_ENHANCE_RELIGION, and it points to available_beliefs for selecting beliefs. This tells the agent when the tool is usable, though it does not provide broader when-not or alternative guidance beyond that gate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
espionage_intrigueB
The Espionage Overview intrigue log: turn, spy, discoverer and the player-visible message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure, and it does tell the agent what the payload contains (turn, spy, discoverer, player-visible message). It does not, however, state that the tool is a side-effect-free read, so the safety profile remains unconfirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact clause with no filler; the resource is front-loaded and the field list follows. It is efficient, though the missing verb slightly weakens the lead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-output-schema tool the description should explain what the agent gets back, and it does name the four fields. It stops short of describing ordering, scope, or how to act on the intrigue, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema declares zero parameters and 100% coverage, so there is nothing for the description to clarify. Baseline 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource — the Espionage Overview intrigue log — and lists the fields it surfaces (turn, spy, discoverer, message). However it is phrased as a noun with no verb, so it never explicitly states that it retrieves/lists the log, leaving the action implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no routing to alternatives such as spies, available_spy_cities, stage_coup, or notification_log. The agent must infer that this is an espionage-intrigue view purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
establish_trade_routeA
Send a caravan/cargo ship to establish a trade route. Either pass dest_x/dest_y/trade_type from
available_trade_routes(unit_id), or just city_name (e.g. "Antwerp") with kind =
international/food/production when that city offers more than one route type.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| dest_x | No | ||
| dest_y | No | ||
| unit_id | Yes | ||
| city_name | No | ||
| trade_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the required unit type (caravan/cargo ship), but says nothing about what happens on failure, whether the unit is consumed or relocated, gold/maintenance costs, or the resulting state of the route. For a mutating action this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no filler; the primary action comes first and the parameter modes follow. The second sentence is dense but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the description covers the parameter modes well but omits unit preconditions and the outcome of the action. It is minimally adequate but leaves real gaps an agent would want filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains that dest_x/dest_y/trade_type come from available_trade_routes(unit_id) and that the alternative mode uses city_name with kind = international/food/production. Only unit_id is left implicit, and the mutually exclusive modes are made clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Send a caravan/cargo ship') and resource ('establish a trade route'), making the action unambiguous. It implicitly distinguishes itself from siblings like plunder_trade_route and available_trade_routes by being the action that consumes the coordinates those tools produce.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains the two calling modes and names available_trade_routes(unit_id) as the source for dest_x/dest_y/trade_type, which is strong conditional guidance. It does not, however, state when to prefer this tool over adjacent ones (e.g. plunder_trade_route) or any preconditions such as the unit being idle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explore_frontierA
Where the known map ends for this unit: revealed, passable plots of its domain (sea for a ship, land otherwise) that border unrevealed plots, nearest first. Each has unrevealed_neighbors (how much stepping there reveals), distance (hex distance, not path length), reachable (true when a route exists through the already-revealed map; false = behind land or an unknown strait, listed last), terrain t (a Trireme cannot enter OCEAN), and map_edge=true on the polar rows (mostly ice beyond). move_unit refuses unrevealed targets, so an explorer picks its next stop from here. frontier_total / unrevealed_plots say how much is left; note explains an empty list. limit is how many plots to list (default 12).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the reachable vs. unreachable ordering, that unreachable plots are listed last, map_edge on polar rows, the OCEAN/Trireme restriction, and that the note field explains an empty list. It does not state read-only status explicitly, but the query nature is evident.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and largely front-loaded, opening with the core concept before enumerating returned fields. It is somewhat run-on with many clauses, but nearly every sentence supplies decision-relevant information rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no annotations and no output schema, the description thoroughly documents the return shape (unrevealed_neighbors, distance, reachable, terrain, map_edge, totals) and the empty-list behavior. The only real gap is the undocumented unit_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains `limit` fully (default 12) but never describes the required `unit_id` parameter, leaving half the parameters undocumented. It does describe the return fields richly, which is beyond input-param scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely defines the resource: revealed, passable plots of a unit's domain that border unrevealed plots, nearest first. This distinguishes it from siblings like revealed_map or map_index, though the opening is phrased poetically ('Where the known map ends') rather than as a direct verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly ties usage to a workflow: 'move_unit refuses unrevealed targets, so an explorer picks its next stop from here,' naming the sibling and the condition that selects this tool. No explicit when-not guidance, 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.
faith_great_person_optionsA
When turn_status shows ENDTURN_BLOCKING_FAITH_GREAT_PERSON: the Great People the faith can buy now.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does add real behavioral context by gating the call on a specific turn_status state, but it says nothing about whether the call is read-only, what the response contains, or how it interacts with the follow-up choice action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the pre-condition front-loaded ahead of the payload. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument option-list tool with no output schema, the description covers the trigger and the content but omits the obvious next step — that these results feed choose_faith_great_person. An agent must infer the workflow from sibling names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter surface for the description to document, and it correctly introduces no pseudo-arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: the Great People purchasable with faith right now. It is a noun-phrase fragment rather than verb+resource, and it does not name the sibling it pairs with (choose_faith_great_person), but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger condition — call this only when turn_status reports ENDTURN_BLOCKING_FAITH_GREAT_PERSON — which is strong contextual guidance. It does not mention alternatives (choose_faith_great_person, free_great_person_options) or what to do when the flag is absent, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finish_turnA
The turn boundary as one call: end my turn, wait until it is my turn again, and return the new turn --
status (as turn_status), digest (as turn_digest: what happened while I was away), turn and notes
(notebook entries since my last finish_turn or briefing; notes="all" brings the latest eight). briefing=true
returns briefing (see the briefing tool) in place of status and digest. If the turn will not end, ok=false
and end_turn carries the refusal with the todo that blocks it: nothing is waited on.
Safe to repeat: when it is already not my turn it only waits, never ends a second turn. Returns early with
discussion_pending=true (an AI wants an answer: discussion() then respond_discussion / accept_deal /
refuse_deal / dismiss_discussion, then call again) or tech_popup_pending=true (set_research). timed_out=true
means the AIs are still moving after timeout_seconds: call again (the default 600 is safe in Claude Code,
which moves a long call to a background task; under a client with a hard per-call limit stay below it).
Progress notifications go out every few seconds.
skip_quiet_turns=N keeps ending turns, up to N more, while nothing needs me (no unit awaiting orders, empty
city, promotion, popup, blocker, expiring ally, worsening alert, paused order or eventful digest); wake_on
adds my own words (event kinds or notification text, e.g. ["Machinery"]). The skipped turns' digests are
merged and turns_skipped / woke_because say what happened; the harness never issues an order for me.
One client owns the turn: another client of this seat gets ok=false with turn_claim instead of ending a
turn under it; force=true takes it over. autosave=false skips the quick-save before ending.
Every key of the reply, what wakes a quiet run, and the claim rules: how_to_play("finish_turn").
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| notes | No | new | |
| wake_on | No | ||
| autosave | No | ||
| briefing | No | ||
| timeout_seconds | No | ||
| skip_quiet_turns | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the mutation (ending a turn), idempotency ('safe to repeat ... never ends a second turn'), the refusal path (ok=false with end_turn carrying the blocking todo), turn-claim ownership rules with force=true takeover, autosave skipping, and progress notifications every few seconds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the dense content is largely warranted by the tool's complex control flow, but the prose is run-on and packs several concepts per sentence, making it harder to scan than a slightly restructured version would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description names and explains the return keys (status/turn_status, digest/turn_digest, turn, notes, turns_skipped, woke_because, ok, end_turn, turn_claim, discussion_pending, tech_popup_pending, timed_out), so an agent understands both invocation and result handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description gives meaning to all seven parameters: notes ('all' brings the latest eight), skip_quiet_turns=N, wake_on (event kinds or notification text, e.g. ['Machinery']), briefing=true, autosave=false, force=true, and timeout_seconds (default 600 with client-specific caveats). This fully compensates for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a precise composite verb sequence: end my turn, wait until my turn again, and return the new turn. It clearly distinguishes itself from the sibling end_turn and wait_for_my_turn by framing itself as 'the turn boundary as one call,' so an agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use and what-to-do-next guidance for each branch: discussion_pending routes to discussion()/respond_discussion/accept_deal/refuse_deal/dismiss_discussion, tech_popup_pending routes to set_research, and timed_out says to call again. It also documents safe repetition, the skip_quiet_turns/wake_on quiet-run behavior, timeout_seconds client constraints, and points to how_to_play('finish_turn') for full detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forgetB
Delete one note from my notebook by id (recall lists them).
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a destructive operation. It does not state whether the deletion is irreversible, whether it requires confirmation or specific permissions, or what happens if the id is invalid or already deleted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the action and scoping, with the id-source hint in a tight parenthetical. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It is a simple single-parameter operation with no output schema to explain, and the id source is covered, so the core is complete. However, for a deletion tool with zero annotations, the absence of any irreversibility or side-effect context leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single 'note_id' parameter is undocumented in the schema. The description compensates partially by explaining it is a note id and that 'recall' lists valid ids, but adds no format or range detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete one note from my notebook by id'), which is unambiguous despite the metaphorical name 'forget'. It also names the sibling 'recall' as the way to obtain ids, giving partial sibling differentiation, though it does not contrast against 'remember' or 'assign'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(recall lists them)' implicitly tells the agent where to get the required id and thus when this tool applies. There is no explicit when-not guidance or alternative named for the delete operation itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
found_pantheonA
Found a pantheon with the given belief, e.g. BELIEF_GOD_OF_THE_SEA. Check turn_status first: only valid when blocking_name is ENDTURN_BLOCKING_FOUND_PANTHEON.
| Name | Required | Description | Default |
|---|---|---|---|
| belief | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the gating condition via turn_status, which is useful operational context beyond the schema, but it does not describe the effects of founding a pantheon, whether the action is irreversible, or any costs, leaving significant gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and immediately followed by the necessary validity check. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter action with no output schema and no annotations, the description covers the essential call requirements: what it does, an example argument, and the turn-status precondition. It could go further by explaining the source of valid beliefs or the consequences of the action, but it is largely sufficient for an agent that can consult sibling tools like available_beliefs and turn_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter ('belief') with 0% description coverage. The description supplies an example value ('BELIEF_GOD_OF_THE_SEA'), which helps clarify the expected format, but it does not explain where valid beliefs come from (e.g., available_beliefs) or list valid options, so it only partially compensates for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Found a pantheon with the given belief'), and gives an example belief constant. It does not explicitly distinguish itself from siblings like found_religion or enhance_religion, but the resource 'pantheon' is distinct enough for an agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear precondition: 'Check turn_status first: only valid when blocking_name is ENDTURN_BLOCKING_FOUND_PANTHEON.' This tells the agent exactly when the tool is valid, though it names no alternative tool for when the condition is not met.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
found_religionA
Found a religion (RELIGION_..., see available_beliefs(kind="founder").religions) in the city at
(city_x, city_y) = data1, data2 of the pending BUTTONPOPUP_FOUND_RELIGION. beliefs in order: a pantheon
belief (only if I have no pantheon yet), a founder belief, a follower belief (+ a bonus belief for Byzantium).
Only valid when blocking_name is ENDTURN_BLOCKING_FOUND_RELIGION. custom_name renames the religion
(empty keeps the stock name).
| Name | Required | Description | Default |
|---|---|---|---|
| city_x | Yes | ||
| city_y | Yes | ||
| beliefs | Yes | ||
| religion | Yes | ||
| custom_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it specifies the required belief ordering, the conditional pantheon slot ('only if I have no pantheon yet'), the Byzantium bonus-belief exception, and the validity gate. It stops short of describing success/failure outcomes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, leading with the core verb and target. Multiple nested references (data1, data2, BUTTONPOPUP_..., ENDTURN_BLOCKING_...) make it run-on and hard to scan, but nearly every clause carries operational information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating game action with no output schema and no annotations, the description covers the precondition, the belief-slot ordering, and the parameter meanings. Missing only downstream effects (what changes once the religion is founded and how failure is surfaced).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 0% schema coverage the description must compensate, and it largely does: city_x/city_y are tied to the popup's data1/data2, beliefs is explained with its ordering and conditional rules, religion is tied to available_beliefs output, and custom_name's empty-string default is clarified. The mapping for religion is somewhat indirect but all five parameters receive meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (found) and resource (religion) plus the activation context (BUTTONPOPUP_FOUND_RELIGION). It is clearly distinguishable from siblings like found_pantheon and enhance_religion. The heavy reliance on raw internal identifiers (data1, data2, blocking_name) slightly muddies the surface but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit gating precondition: 'Only valid when blocking_name is ENDTURN_BLOCKING_FOUND_RELIGION', and routes the agent to available_beliefs(kind="founder").religions for valid inputs. It does not, however, contrast against sibling alternatives such as found_pantheon or enhance_religion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
free_great_person_optionsB
When turn_status shows ENDTURN_BLOCKING_FREE_ITEMS: how many free Great People are owed and which unit types (UNIT_SCIENTIST, UNIT_ENGINEER, UNIT_MERCHANT, UNIT_ARTIST, UNIT_WRITER, UNIT_MUSICIAN, ...) qualify.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states the data is only meaningful under one turn_status value, but doesn't say whether the call is read-only, what happens if called when the flag isn't set, or the shape of the result (no output schema). Its one behavioral clue is the activation precondition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence, front-loaded with the activation condition. It is efficient but the middle clause ('how many free Great People are owed and which unit types... qualify') is awkwardly phrased as an outcome rather than a purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-annotation, no-output-schema tool, the description states the trigger and the content delivered, but says nothing about its own read-only nature, what the result looks like, or which sibling tool consumes the answer. A follow-on pointer (e.g., 'call choose_free_great_person to select one') would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description doesn't need to document any inputs, and it stays silent on none because there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States that the tool reports the number of free Great People owed and their unit types. However, the phrasing 'how many... and which unit types... qualify' is reader-facing query language, not really a verb+resource declaration, and it's tied to a turn_status flag rather than stating the tool's own purpose. It does distinguish itself from sibling 'choose_free_great_person' implicitly (this reports, that selects), but doesn't say so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition: 'When turn_status shows ENDTURN_BLOCKING_FREE_ITEMS.' This tells the agent exactly when to invoke it. It doesn't name what to do next (e.g., use choose_free_great_person), and doesn't say what to do when the flag is absent, so it's not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generic_popupA
Read the open yes/no confirmation (the game's generic popup): its text and numbered buttons. These are BUTTONPOPUP_RETURN_CIVILIAN (keep a captured civilian or return it: returning to a city-state gives +30 influence, to an AI a diplomatic bonus), ANNEX_CITY / PUPPET_CITY after a conquest, BARBARIAN_RANSOM, MINOR_CIV_ENTER_TERRITORY, CONFIRM_COMMAND and the like. Nothing else moves while one is open ("popup needs a decision"). Answer with answer_popup(button).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does it well: it discloses that this is a read-only inspection, that the game blocks all other action while a popup is open, and it explains the semantic consequences of the enumerated choices (returning a civilian to a city-state gives +30 influence). It stops short of describing error cases (e.g., behavior when no popup is open).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by the popup-type enumeration that establishes scope, then the blocking constraint, then the handoff to answer_popup. The middle enumeration is lengthy but each item earns its place by clarifying what 'generic popup' means; no redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly describes the return content (popup text and numbered buttons). It covers purpose, blocking behavior, and the follow-up call, leaving only edge cases like 'no popup open' unspecified. Adequate for a zero-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description does not invent parameter semantics, and it correctly points the agent to answer_popup(button) for the write side, keeping the two tools' parameter roles distinct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: read the currently open generic popup, returning its text and numbered buttons. It also names the concrete popup variants (BUTTONPOPUP_RETURN_CIVILIAN, ANNEX_CITY, BARBARIAN_RANSOM, etc.) and contrasts cleanly with the sibling answer_popup, which is the tool that responds rather than reads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: call it when a popup is open, and it tells the agent to answer via answer_popup(button). It also specifies the gating condition that no other action can proceed while a popup is open. It lacks an explicit 'do not use when no popup is open' caveat, but the enumeration of triggers makes the intended context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gift_tile_improvementA
Buy a city-state an improvement on one of its tiles (clicking a highlighted hex). x/y must
be a plot from gift_tile_improvement_options. Reports the gold spent, the improvement that
appeared, and influence before/after.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden: it discloses that gold is spent and that influence changes (with before/after), and that an improvement appears. It omits prerequisites such as gold/influence thresholds or diplomatic state, so coverage is only partial 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, front-loaded with the action, followed by the constraint and the return summary. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description still summarizes the return (gold spent, improvement, influence before/after) and gives the key constraint. Only player_id semantics and explicit alternative-selection guidance are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that x/y identify a plot from gift_tile_improvement_options, but player_id (the target city-state) is left unexplained, so meaning is added for only two of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and object (buy/gift an improvement on a tile) plus the target (city-state), which cleanly separates it from siblings like gift_unit and minor_gold_gift. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly constrains usage by requiring x/y to be a plot drawn from gift_tile_improvement_options, effectively routing the agent to the prerequisite tool. It does not, however, state when to prefer this over other city-state gifts such as minor_gold_gift.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gift_tile_improvement_optionsA
The city-state screen's "Gift Improvement" button, and the hexes it would highlight. can /
cost / why_not are the button (allies only, and the gold has to be there); plots is every
tile within search_radius of that city-state's capital where the gift is legal -- the same
magenta hexes the stock interface mode lights up. A tile I have not revealed is listed as bare
coordinates. Empty plots with can true means the ally has nothing left worth improving.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that gifting requires an alliance and sufficient gold, that plots are limited to tiles within search_radius of the capital where the gift is legal, that unrevealed tiles come back as bare coordinates, and that empty plots with can=true means nothing left to improve.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the identity of the tool (the button and its hexes) before enumerating the output fields, and each sentence carries information. Slightly dense with backtick-heavy field naming, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations exist, so the description must describe the return shape — and it does, covering can/cost/why_not/plots and the edge case of empty plots. Input side (player_id) is the only under-covered piece.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter (player_id) with 0% schema description coverage, so the description must compensate — it doesn't explain player_id at all, though the name is largely self-explanatory. Its detail is spent on output fields rather than input semantics, so baseline 3 is fair.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the city-state screen's 'Gift Improvement' button) and what the call returns (the button state plus the hexes it would highlight). It reads as a preview/options query, which is distinguishable from the sibling action tool gift_tile_improvement, though that sibling is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — you call this to inspect gifting options before committing via gift_tile_improvement — but the description never states when to use this versus the action tool, nor any prerequisites or ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gift_unitA
Gift one of my units to a met city-state (Network.SendGiftUnit). Verifies the unit left
our army; influence_gain / travel_turns say what it earns and when (not at once). Refused while
an earlier gift is still on its way. Use gift_unit_options to see who can go.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes | ||
| minor_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and delivers real behavioral context: the gift is verified (unit leaves the army), the effect is delayed (influence_gain/travel_turns, 'not at once'), and it is refused if a prior gift is in transit. It doesn't cover permissions or irreversibility, but the timing and rejection semantics are substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, the API reference is a brief parenthetical, and the remaining sentences each carry distinct behavioral facts (verification, delay, refusal). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param mutation with no annotations and no output schema, it covers purpose, alternatives, delayed-effect fields, and a failure mode. The only gap is it doesn't explain return format beyond naming influence_gain/travel_turns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It implicitly maps the two params ('one of my units' = unit_id, 'met city-state' = minor_id), giving semantic anchoring, but it never discusses the parameters directly or their formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Gift one of my units to a met city-state') and even names the underlying API (Network.SendGiftUnit). It is clearly distinguishable from sibling gift tools like gift_tile_improvement and minor_gold_gift.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative explicitly ('Use gift_unit_options to see who can go') and states a hard precondition ('Refused while an earlier gift is still on its way'). It gives clear context for when this works but no explicit when-not-to-use beyond the refusal condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gift_unit_optionsA
Units that can currently be gifted to this met city-state (the Gift Unit button), with the
button's figures: influence_gain and travel_turns (the unit walks there; the influence lands with
it). While a gift is still on its way (in_transit.arrives_in) the list is empty (why_empty): a
city-state takes one gift at a time. gift_unit sends one.
| Name | Required | Description | Default |
|---|---|---|---|
| minor_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it explains that the list is empty while a gift is in transit (in_transit.arrives_in, why_empty), that a city-state accepts only one gift at a time, and that the unit travels and delivers influence. It does not discuss read-only status or permissions, but for a query tool the disclosed behavior is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core resource and output figures, then adds the empty-state condition and the related gift_unit action. It is a single dense paragraph with some parenthetical nesting, but every sentence contributes useful information and there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description does a good job explaining what the tool returns: units with influence_gain and travel_turns, plus empty-list diagnostics like why_empty and in_transit.arrives_in. The main gap is the unexplained minor_id parameter, but otherwise it is complete enough for an agent to call and interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain minor_id, but it never names or defines the parameter. The phrase 'this met city-state' gives a weak contextual hint that minor_id identifies the city-state, but it does not compensate for the complete lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource: units currently giftable to a met city-state, including the button's influence_gain and travel_turns figures. It distinguishes from the sibling gift_unit by noting that gift_unit sends one. However, it lacks an explicit verb like 'list' or 'get,' so it stops short of the highest clarity tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this tool shows gift options, and gift_unit is the action that sends one. The empty-list condition while a gift is in transit is helpful context, but there is no explicit statement of when to use this tool versus alternatives or prerequisites. A user must infer the workflow from the mention of gift_unit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
give_orderA
Give one of my units a short sequence of steps the harness carries out over the coming turns, so a plan
already chosen does not cost a call every turn. steps (at most 6, in order): {kind: "move", x, y} walk
there (multi-turn); {kind: "build", build: "FARM"} build it where the previous move ends (x, y name
another plot); {kind: "heal", hp: 80} heal to at least that percent (default 100); {kind: "hold", mission:
"fortify"|"sleep"|"alert"} as the last step. Example: move to (12,8) then build FARM; or heal to 80, move
to (30,14), hold. purpose is a free-text label for the order.
It runs now (start=true) as far as it can, then at the start of each of my turns (finish_turn /
wait_for_my_turn carry orders), one step per turn at most, through move_unit / unit_mission. It pauses
and hands the unit back with pause.reason and hint when a hostile comes into sight within
interrupt.hostile_within plots (default 2; 0 off), the unit was damaged (interrupt.damaged, default true)
or is below interrupt.hp_below, an enemy stands on the destination (an order never attacks), a step is
refused or makes no progress, a save was loaded, or I give the unit a direct order. An order never declares
war, attacks, ends the turn or touches another unit; a unit on automation leaves it as soon as the order
is stored. One open order per unit (replace_id replaces it); a first step that cannot run now refuses the
order. Stored in my notebook: orders survive a restart, briefing() lists them, resume_order / cancel_order
finish a paused one. Every interrupt and state: how_to_play("give_order").
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | ||
| steps | Yes | ||
| purpose | No | ||
| unit_id | Yes | ||
| interrupt | No | ||
| replace_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses interrupt triggers, pause.reason and hint behavior, that orders never attack/declare war/end turns/touch other units, automation removal, persistence across restarts, and one-order-per-unit semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: purpose and execution model first, then step grammar, then interrupt and lifecycle details. For a complex multi-turn tool, every sentence adds needed operational information rather than repeating structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, six parameters, and 0% schema description coverage, the description is complete enough for correct invocation. It explains the lifecycle, return-side pause fields, persistence, and relevant sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it explains step kinds with examples and limits, start behavior, purpose as a free-text label, interrupt defaults, and replace_id. The main step object forms are fully specified, with only the string step variant left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: give one unit a sequence of steps carried out over coming turns. It clearly distinguishes itself from immediate-action siblings like move_unit and unit_mission by describing the deferred, per-turn execution model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this when a plan is already chosen and should not cost a call every turn. It also covers replacement, refusal conditions, direct-order cancellation, and points to resume_order/cancel_order for paused orders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
goody_hut_optionsA
When turn_status.pending_popups shows BUTTONPOPUP_CHOOSE_GOODY_HUT_REWARD (a Shoshone Pathfinder entered ancient ruins): the rewards on offer, each with the popup's own description.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the trigger condition and that each reward comes with the popup's own description, implying a read-only query. It never explicitly says this is non-mutating or what calling it changes about server state, which is the main residual gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads the triggering condition before describing the payload. The nested parenthetical interrupt is slightly awkward but carries real information, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param options lister with no output schema, the definition supplies the call condition and a sketch of the return (rewards plus descriptions). It omits the natural next step of feeding a choice to choose_goody_hut, which would have made it self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema has nothing to document and the baseline is 4. There is no parameter syntax the description could add or omit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific resource — the goody hut reward options — and grounds it in a concrete game trigger (Shoshone Pathfinder entering ancient ruins). It doesn't name the sibling that consumes this output (choose_goody_hut), so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'when' is explicit: call this when turn_status.pending_popups shows BUTTONPOPUP_CHOOSE_GOODY_HUT_REWARD. However, no alternatives or exclusions are given (e.g. what to do instead if that flag is absent), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
great_person_progressA
Great Person overview: each city's specialist progress, class-specific threshold and rate; national General/Admiral XP meters and next Prophet faith threshold.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the data categories returned, but it does not explicitly state that the tool is read-only, has no side effects, or requires no parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded with 'Great Person overview' and then packs the relevant detail into a compact semicolon-separated list. No words appear wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-annotation, no-output-schema informational tool, the description is nearly complete because it lists what the tool returns. It stops short of stating the output format or confirming read-only behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline for parameter semantics is 4. There are no parameters whose meaning the description needs to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and enumerates the returned information: city specialist progress, thresholds/rates, national General/Admiral XP, and next Prophet faith threshold. It is clearly an informational overview, but it does not explicitly contrast itself with siblings like faith_great_person_options or free_great_person_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is provided, nor are alternatives named. The word 'overview' implies a read-only lookup, but an agent must infer that this tool is for inspecting progress rather than taking an action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
how_to_playA
How to play through these tools, from the playbook shipped with this server; needs no game and works at
any time. With no topic: the index of topics and the introduction (what you are, what you see, gate,
seats, loading a game). Playbook topics: start, turn_loop (every turn in order; two agents or two clients on
one game), quiet_turns (skip_quiet_turns and what wakes a run), batches (do and action_id), verify,
blockers (the end-turn blocker table and what clears each), diplomacy (leader screens, discussions, the
trade table), rules (what the harness refuses on purpose), first_turn; "all" is the whole playbook. A tool
name -- finish_turn, briefing, turn_status, overview, compare, propose_deal, give_order -- is that reply's
full key-by-key reference, the part its own description leaves out. Read a topic once, when you first
need it; the answer is Markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and adds real behavioral context: the call is stateless ('needs no game'), safe to invoke anytime, and returns Markdown. It also discloses the fallback behavior when topic is omitted (index + introduction). This is solid disclosure for a read-only help endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and the dense topic enumeration earns its space because it documents the single unstructured parameter. It is somewhat sprawling as one long paragraph, but there is little filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter help tool with no output schema, the description covers everything needed: what it returns (Markdown), the value space of topic, the stateless no-game behavior, and when to read it. No output schema exists, so return values are appropriately described inline.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema only declares a bare string, so the description must compensate — and it does extensively. It explains the no-argument default (index/intro), enumerates valid topic values (start, turn_loop, quiet_turns, batches, verify, blockers, diplomacy, rules, first_turn), defines 'all', and explains that a tool name yields that tool's key-by-key reference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it serves the server's shipped playbook as on-demand help, with a clear scope (overview, playbook topics, or per-tool reference). An agent can tell it is a documentation tool. It does not, however, distinguish itself from the sibling 'reference' tool, whose role may overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: 'Read a topic once, when you first need it' and clarifies it 'needs no game and works at any time.' It enumerates the trigger conditions (first need of a topic, needing a tool's full key reference). It stops short of naming an alternative tool to use instead when in-game state is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incoming_dealA
Read the current trade table (scratch deal): items already offered, who they are from. A
VOTE_COMMITMENT row names the resolution, the pledged choice and the number of votes (votes); a
THIRD_PARTY_WAR / THIRD_PARTY_PEACE row names the third party (other player id, other_name, minor).
Empty items means no deal is on the table. Does not mutate the deal or open the trade screen.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it does disclose the key traits: it is a read that 'does not mutate the deal or open the trade screen', so the agent knows there are no side effects or UI transitions. It falls short of covering permissions, timing, or error/empty-handling beyond the 'empty items means no deal' note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the row-type detail, then the non-mutation caveat. Dense but every clause adds meaning; only the parenthetical field lists push it slightly toward wordiness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 correctly compensates by naming the row types and their fields and by explaining the empty-items case. Given a zero-param read tool, this is close to complete, with the main gap being how it relates to the other deal tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description's field explanations (votes, other, other_name, minor) describe return content rather than inputs, which is useful but not required here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read the current trade table (scratch deal)' and enumerates what it contains (items already offered, who they are from). It is clear what the tool returns, though it does not explicitly contrast itself with siblings like current_deals, accept_deal or refuse_deal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative routing is given. The role of 'inspect an incoming deal' is only implied by the name and the row-type prose; nothing tells the agent when this is the right call versus current_deals or negotiate_deal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
known_worldA
Everything this seat knows: empire, own units/cities, met civs and city-states, notifications, and every revealed plot. Fogged plots have vis=false and omit live occupants; unrevealed tiles are absent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose meaningful data semantics: fogged plots carry vis=false and omit live occupants, and unrevealed tiles are absent entirely. This pre-empts an agent misreading missing plots as empty ones. It does not state the operation is non-mutating or comment on payload size, but the fog disclosure is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the scope enumeration and followed by the fog-of-war caveat. Every clause adds information; nothing is restated from the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, no-output-schema aggregate read, the enumeration of payload sections effectively doubles as a lightweight return description, and the fog semantics close the main ambiguity. Only the absence of any guidance on when this beats narrower siblings leaves a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The description instead spends its words on return-content semantics, which is the right allocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and enumerates its scope precisely: empire, own units/cities, met civs and city-states, notifications, and every revealed plot. An agent can tell what it returns, though the description never distinguishes it from overlapping siblings such as revealed_map, overview, players, or notification_log.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Everything this seat knows' implies this is the comprehensive state dump to reach for when you need full context, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many map/status/notification siblings. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
league_cast_votesA
Vote on this session's World Congress proposals (see league_status()'s votable while in_session).
votes: [{"resolution_id": id, "direction": "enact"|"repeal", "num_votes": n, "choice": id (optional)}].
For a plain yes/no proposal (every repeal; enacts with no choices listed) choice is required:
"yes"/"no" or 1/0 (leagueoverview.lua's kChoiceYes/kChoiceNo). For proposals with
choices (e.g. World Leader, host city) pass the listed choice id. Leftover votes are cast as abstain.
| Name | Required | Description | Default |
|---|---|---|---|
| votes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose non-obvious rules: leftover votes are cast as abstain, and 'choice' is required for plain yes/no proposals but must be a listed choice id otherwise. It does not describe error behavior or what a successful submission returns, so it stops short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then the payload shape, then the edge-case rule — a sensible order with no filler. It is dense and slightly run-on in the choice-explanation sentence, but every clause conveys an actual rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no annotations and no output schema, the description supplies the payload contract and where to obtain valid ids, which is most of what an agent needs. It omits confirmation/return behavior and failure modes, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema itself is an opaque 'array of object with additionalProperties', so the description fully carries this load by spelling out the per-vote fields (resolution_id, direction with enum values enact/repeal, num_votes, optional choice). This is exactly the compensation required when the schema documents nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Vote on this session's World Congress proposals', which cleanly separates it from the league_propose_enact and league_propose_repeal siblings. It also names the precondition context (in_session, votable proposals from league_status()).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent to consult league_status()'s 'votable' list and states the session must be in_session, which is usable routing context. However, it never states when NOT to use this tool or explicitly contrasts it with the proposal tools, so guidance is clear but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
league_propose_enactA
Propose enacting a World Congress resolution, e.g. RESOLUTION_SCIENCES_FUNDING (see league_status()
for what's currently proposable and any required choice). Needed to clear
ENDTURN_BLOCKING_LEAGUE_CALL_FOR_PROPOSALS -- closing the popup without proposing does NOT clear it.
| Name | Required | Description | Default |
|---|---|---|---|
| choice | No | ||
| resolution_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses the non-obvious blocking mechanic (closing the popup without proposing does NOT clear it) and points to league_status for the required choice. However, it does not describe whether resolutions pass immediately vs enter a vote, cost, or side effects of the choice parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then the example, then the critical blocking note, with no wasted sentences. Slightly dense with the parenthetical deferral, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% parameter coverage, the description covers purpose and the turn-blocking mechanic well but leaves the valid resolution_type set, choice semantics, and post-proposal flow to inference. Adequate but with clear gaps for a congress action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does partially: it provides an example resolution_type value and flags that a required `choice` may be needed, deferring to league_status(). It still does not enumerate valid resolution_type values or explain what the integer choice represents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Propose enacting a World Congress resolution', with a concrete example value (RESOLUTION_SCIENCES_FUNDING). The word 'enact' implicitly distinguishes it from the sibling league_propose_repeal, but the contrast is never made explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: it is required to clear ENDTURN_BLOCKING_LEAGUE_CALL_FOR_PROPOSALS and points the agent to league_status() for what is currently proposable. Does not explicitly say when to prefer this over league_propose_repeal, but the enact-vs-repeal framing carries that distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
league_propose_repealA
Propose repealing an active World Congress resolution (see league_status()'s proposable_repeal).
| Name | Required | Description | Default |
|---|---|---|---|
| resolution_id | Yes |
TDQS
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 two useful behavioral facts: the target must be an 'active' resolution, and valid candidates come from proposable_repeal. It omits whether the proposal needs votes to pass, whether it costs anything, and what happens on success, leaving meaningful gaps for a mutation-style tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and resource, with the pointer to the data source trailing. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should tell the agent more about the surrounding flow, such as the voting step that follows or the effect of repeal. The pointer to league_status covers input sourcing, but the lifecycle after proposing is left unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single required resolution_id parameter, so the description must compensate. It does so partially by naming the field in league_status() where valid ids live, but adds no type, format, or range detail beyond the schema's integer declaration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'propose repealing an active World Congress resolution.' The verb 'repeal' naturally contrasts with the sibling league_propose_enact, so an agent can distinguish them without opening either schema. It stops short of explicitly naming the alternative, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Points the agent to league_status()'s proposable_repeal field as the source of valid targets, which is genuine usage guidance for input selection. However, it gives no when-to-use vs when-not guidance relative to league_propose_enact or league_cast_votes, nor any prerequisites about the World Congress state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
league_statusA
Read-only: World Congress state -- resolutions I can propose (between sessions) or vote on (during a
session), each with the tooltip the League Overview shows (details). name is the button text
with the choice's icon tag removed (the screen draws that icon): "World Religion: Tengriism",
not "[ICON_RELIGION_TENGRIISM]". Greyed resolutions are unavailable_enact. Already in effect:
active_resolutions and active_effects. Also
projects (World's Fair / International Games / ISS: percent complete, our production, the hammers
each reward tier needs). See league_propose_enact/league_propose_repeal/league_cast_votes.
The same project paragraph is on a league process in available_production (league_project).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: it declares the tool read-only, explains that greyed resolutions surface as `unavailable_enact`, and describes how `name` is normalized (icon tag stripped) versus what the screen draws. It adds no auth/rate-limit notes, but those are not applicable to a local status read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The 'Read-only' scope is front-loaded and nearly every clause carries usable information (field names, formatting rule, project contents, sibling pointers). It is dense and slightly run-on around the icon-tag example, which is the one clause that could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the return shape, and it does: `details`, `name`, `unavailable_enact`, `active_resolutions`, `active_effects`, and `projects` with the specific sub-values (percent complete, our production, hammers per reward tier). An agent can consume the result without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to clarify or omit. No parameter-level meaning is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific read of a named resource ('World Congress state') and immediately scopes what it contains (resolutions to propose between sessions, resolutions to vote on during a session). It names the sibling action tools (league_propose_enact/league_propose_repeal/league_cast_votes), so an agent can distinguish status from action without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description routes the agent to the correct action tools for proposing, repealing, and voting, and its 'between sessions' vs 'during a session' framing tells the agent when each resolution class is relevant. It stops short of an explicit 'call this before X' instruction or stating when not to use it, but the alternative routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_latestA
Crash-recovery: load whichever save (quicksave OR autosave) has the newest filesystem mtime,
regardless of name. Prefer this over load_save("QuickSave") when resuming after a crash -- an
autosave made during play can be newer than the last explicit quicksave, and load_save only checks
quick/manual saves before ever considering autosaves. Only works from a fresh main-menu state:
exit_to_main_menu first. The answer carries seat like load_save.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does real work: it discloses the selection algorithm (newest mtime across quicksave/autosave), the required game state before invocation, and that the result carries a `seat`. It omits failure behavior (e.g., what happens if no save exists) and whether the load is destructive to current state, so it falls just short of exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core rule ('load whichever save has the newest mtime') and each subsequent sentence adds a distinct, non-redundant fact: the sibling comparison, the precondition, the return field. It is slightly dense and multi-clause, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param action with no output schema, the description supplies everything needed to call it correctly: selection logic, sibling routing, precondition ordering, and a note about the returned `seat`. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no per-parameter semantics to document; baseline is 4. The description correctly spends its words on behavior instead of inventing argument detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (load the newest save) and defines the exact selection rule (quicksave OR autosave by newest filesystem mtime). It explicitly distinguishes itself from its closest sibling, load_save, so an agent can tell them apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (resuming after a crash), a named alternative and why to prefer this one over it (load_save only checks quick/manual saves), and a hard precondition (must be in fresh main-menu state, run exit_to_main_menu first). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_saveA
Load a save from the main menu by its bare name, no path or .Civ5Save extension (e.g. "QuickSave",
or "Sejong_0180 AD-1200" for a manual save). Only works from a fresh main-menu state, not mid-game:
exit_to_main_menu first. The answer carries seat, the player this server will play in the loaded
game (auto seats are detected afresh; hotseat keeps the default, set_seat changes it).
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses a hard state precondition (fresh main-menu, not mid-game), the filename format constraint, and non-obvious result semantics for the returned `seat` (auto seats re-detected, hotseat keeps default, set_seat overrides). It omits failure behavior (missing/invalid save) and whether loading discards current game state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action and the parameter format, then the precondition, then result semantics. Dense but each sentence earns its place; the final `seat` sentence is somewhat compressed but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter state-changing tool with no annotations and no output schema, the description covers the identifying action, the parameter format, the state precondition, and the shape of the returned answer. Nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema names nothing but 'filename', yet the description fully compensates: bare name, no path, no .Civ5Save extension, with two concrete examples including one with spaces. This is exactly the format detail an agent would otherwise guess wrong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (load a save) with the exact scope ('from the main menu by its bare name'), which distinguishes it from siblings like load_latest (most recent save) and quick_save (writing a save). An agent can identify this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the precondition and exclusion ('Only works from a fresh main-menu state, not mid-game: exit_to_main_menu first'), naming the prerequisite tool to call. It does not, however, compare against the obvious alternative sibling load_latest, so the routing between the two load tools is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_peaceA
Offer peace to a civ I'm at war with, through the real trade screen: the treaty goes on both sides and
items (same shapes as propose_deal: GOLD, GOLD_PER_TURN, RESOURCES, CITIES, THIRD_PARTY_WAR/PEACE...) are
the terms, from_us picking who gives what. An AI answers on the spot (accepted, reply, at_war afterwards;
it can refuse for a while after a declaration even when nothing locks it). A human seat gets it as a pending
proposal (pending: true) to accept_deal / refuse_deal on its turn. Refused with the leader screen's reason
while locked into war (see trade_catalog(player_id).peace). Any propose_deal while at war is the same peace deal.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | ||
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full load and does well: it discloses the immediate AI reply (accepted, reply, at_war), that an AI may refuse for a while after a declaration, that a human seat receives a pending proposal, and the locked-war refusal path. It omits permissions/rate-limit style constraints but covers the key outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and stays information-dense with no filler sentences. The parenthetical enumerations and nested clauses make it slightly dense, but every clause adds actionable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description supplies the return shape (accepted, reply, at_war, pending) plus the human-seat proposal flow. For a two-parameter diplomacy tool with no annotations, nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for `items` by enumerating term types (GOLD, GOLD_PER_TURN, RESOURCES, CITIES, THIRD_PARTY_WAR/PEACE) and explaining from_us. player_id is left unelaborated, but its meaning is obvious from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Offer peace to a civ I'm at war with') and the channel it uses ('through the real trade screen'). It explicitly distinguishes itself from sibling propose_deal by noting any propose_deal while at war is the same peace deal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The condition for use is clear (you are at war and want peace), and it points to accept_deal/refuse_deal for human seats and trade_catalog(player_id).peace for lock reasons. No explicit when-not, but the routing to alternatives is mostly present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_indexA
Compact map scan: revealed luxuries/strategics, barb camps, ruins, met foreign cities,
visible natural wonders, and in-sight world wonders. A camp with a city-state kill-camp quest
carries cs_quest (met CS only). Prefer this over known_world unless you need every plot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does disclose the returned categories plus a non-obvious data trait: a camp with a city-state kill-camp quest carries `cs_quest`, visible only if the CS is met. It stops short of stating that the operation is a pure read with no side effects, but 'scan' plus the return-field detail covers most of what an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the scope of the scan, followed by the one caveat field and then the sibling routing. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 describe the return surface, and it enumerates the returned categories and the conditional `cs_quest` field. Combined with the explicit sibling routing, an agent has everything required to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify beyond what the schema already shows; the baseline for a no-parameter tool is 4. The description correctly avoids inventing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (compact map scan) and enumerates exactly what is returned: revealed luxuries/strategics, barb camps, ruins, met foreign cities, natural wonders, in-sight world wonders. It also names the sibling it supersedes (known_world), so an agent can differentiate it without inspecting either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Prefer this over known_world unless you need every plot' gives both the preferred tool and the condition under which the alternative is warranted. That is a complete when-to-use / when-to-use-alternative statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_windowA
Revealed plots within radius of (x, y). vis=true is in sight now and includes yields
(food/production/gold/science/culture/faith), fresh_water, worked, under_construction, trade_route
(the plot hover's "Trade Route": a city connection to the capital, not a caravan line; those are
trade_routes().path), and live units/cities (units have strength/promotions; a city banner has strength, garrison,
puppet/razing, religion). A resource tile carries resource (and resource_qty); what a
resource gives when improved, its happiness and its blurb are in reference("resources"), once, not
on every tile. A revealed Oil/Aluminum/Coal tile that we cannot yet hook has
resource_requires_tech. A barbarian camp with a city-state kill-camp quest has cs_quest.
vis=false is discovered but fogged (no live units/owners/features/yields). Prefer known_world
for the full discovered map.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| radius | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it explains fog semantics, which fields appear when vis=true, what vis=false omits, and how resource details are offloaded to reference('resources'). It never explicitly states read-only status, but the query-like behavior is clear from context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the core purpose, and subsequent sentences stay focused on return semantics and alternatives. It is dense and somewhat run-on, but most sentences earn their place by documenting useful return fields and fog behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and 0% schema description coverage, the description is strong on output semantics but incomplete on input semantics. It explains returned data richly, yet leaves x/y/radius under-documented and mentions vis in a way that does not match the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for x, y, and radius. It only implies that x/y are a center point and radius is a distance; it does not define coordinate conventions, units, or the default radius of 3. It also references a vis parameter that does not exist in the input schema, which adds confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific scope: revealed plots within a radius of (x, y), and it distinguishes vis=true from vis=false. It also names the sibling alternative known_world for the full discovered map, so an agent can tell what this tool returns versus alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear routing rule: 'Prefer known_world for the full discovered map,' and explains what vis=true vs vis=false means. It lacks explicit when-not conditions beyond that single alternative, but the usage context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maya_optionsB
Pending Maya Long Count rewards, including unavailable types and the baktun when chosen.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that unavailable types are included and that baktun appears when chosen, which is useful return-content context, but it does not state whether the tool is read-only, whether it has side effects, or what permissions or state changes are involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with the resource front-loaded and no filler. It is appropriately sized for a zero-parameter options tool, though it is a fragment rather than a complete sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter query tool with no output schema and no annotations, the description should explain what is returned and when to use it. It partially describes the returned set (pending rewards, unavailable types, baktun when chosen), but it leaves the tool's action and usage context implicit, so it is only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description adds no parameter details, but none are needed because there are no inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Maya Long Count rewards') and notes contents (unavailable types, baktun when chosen), but it is a noun phrase with no verb such as list/get and does not explicitly distinguish this tool from the sibling choose_maya_bonus. An agent can infer it is an options-query tool, but the action is not stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no explicit alternative. The presence of choose_maya_bonus as a sibling implies this tool should be consulted before choosing a reward, but the description never says so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
minor_gold_giftA
Gift gold to a city-state. amount must be city_state_gifts' small, medium, or large tier.
Check that tier's makes_ally first: influence bought is not the alliance bought when another major
is sitting above me. The reply says still_short when the gift lands under the current ally.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses a return-state signal (`still_short` when the gift lands under the current ally) and the influence-vs-alliance nuance. However, it omits core mutation facts: whether gold is irreversibly spent, cost magnitude, and any permission/eligibility requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and then the crucial constraint and reply behavior. The backtick-heavy phrasing is slightly cryptic but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param mutation tool with no annotations, no output schema, and 0% schema coverage, the description covers the key `amount` constraint and one reply signal. It is adequate but leaves `player_id` semantics and the gold-spending cost unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds crucial meaning to `amount` (must be a small/medium/large tier from `city_state_gifts`), which the bare integer schema does not convey. It leaves `player_id` undocumented and does not enumerate the concrete integer values behind each tier, capping the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Gift gold to a city-state'. This clearly distinguishes it from sibling gift tools like gift_unit and gift_tile_improvement, which gift different resources. It stops short of explicitly naming those siblings as alternatives, so it is clear but not maximally differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a real precondition: check the tier's `makes_ally` before gifting, and warns that influence bought differs from an alliance when another major sits above you. It also points to the `city_state_gifts` sibling as the source of valid tiers, though it does not enumerate 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.
move_spyB
Assign/relocate a spy (see available_spy_cities). Recall home instead with target_player_id=-1, target_city_id=-1. as_diplomat only applies when the target is another major civ's capital at peace.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| as_diplomat | No | ||
| target_city_id | Yes | ||
| target_player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose two real behaviors: the sentinel-value recall mechanism and that as_diplomat only applies when targeting another major civ's capital at peace, which is valuable. But it omits permissions required, what happens to the spy's prior assignment, and any failure conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action and then the two special-case behaviors. No filler, though the recall and diplomat clauses are slightly terse and packed together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, 4 undocumented parameters, and no output schema, the description covers the two most unusual behaviors but leaves agent_id, permissions, and return effects unexplained. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It meaningfully clarifies target_player_id and target_city_id (via the -1 recall sentinel) and constrains as_diplomat, but agent_id and the normal-case semantics of target_player_id/target_city_id remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Assign/relocate a spy') and points to the sibling tool available_spy_cities for valid destinations. It is clearly distinguishable in intent, though it doesn't differentiate itself from stage_coup or spies explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides useful invocation guidance via sentinel values (target_player_id=-1, target_city_id=-1) for the recall action, which is a genuine usage pattern. However, it gives no guidance on when to use this tool versus alternatives like stage_coup, nor any prerequisites before calling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_unitA
Order one of my units to move to plot (x, y) (multi-turn paths allowed, like a right-click).
Selects the unit like the unit panel does (orders go through the game's network path).
A unit on a conditional order (give_order) is taken back: the order pauses (order_paused).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the unit is selected like the unit panel, that orders route through the game's network path, and critically that an existing conditional order is taken back and pauses. These are real side effects not visible in the schema, though permissions and failure modes on invalid plots are unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and destination, followed by behavioral caveats. No padding, though the parenthetical clauses are slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with zero annotations, no output schema, and no schema descriptions, the description covers the essential action and the give_order side effect adequately. It still leaves gaps on parameter sourcing and error/edge behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It identifies x/y as a plot coordinate and unit_id as 'one of my units', adding meaning over the bare integer types, but gives no guidance on valid ranges or how to obtain a unit_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (move) and resource (unit) plus the destination form (plot x, y). It distinguishes itself from give_order and unit_mission by framing itself as the direct 'right-click' move. It stops short of explicitly naming which sibling to prefer in ambiguous cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the interaction rule with conditional orders (a give_order unit is taken back and paused), which routes the agent contextually. However, it never states when to choose move_unit over unit_mission or give_order, so usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
negotiate_dealA
Ask an AI civ about a deal without committing to it (the trade screen's helper buttons), then close
the screen. mode="equalize": put a draft on the table and ask what would make it acceptable;
"what_will_ai_give": list only my items (from_us=true) and see what the AI offers for them;
"what_does_ai_want": list only their items (from_us=false) and see what the AI asks in return.
items takes propose_deal's rows, from_us saying who gives each one -- there is no offer/give/receive shape:
[{"type":"RESOURCES","resource":"RESOURCE_GOLD","from_us":true,"amount":1}, {"type":"GOLD_PER_TURN","from_us":false,"amount":5}]
Returns the AI's reply and the resulting table items, which can be passed to propose_deal as-is.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | equalize | |
| items | Yes | ||
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the non-committal nature, the side effect of closing the trade screen, and what is returned (the AI's reply plus the resulting `items` handed back). It omits auth/permission prerequisites and any failure or refusal behavior, which holds it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the no-commitment constraint before the mode breakdown, and the inline JSON example is worth its space. The mode-definition run-on is dense but each clause is functional; minor tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all three modes, the full payload shape, and the return value despite there being no output schema, which is the main completeness risk here. The unexplained `player_id` is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and largely does: it defines the three `mode` values and fully specifies the `items` row shape with a concrete JSON example and the meaning of from_us. Only `player_id` is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('ask an AI civ about a deal') and draws the crucial line against committing to it, explicitly contrasting with the sibling propose_deal. An agent can distinguish this from propose_deal/incoming_deal without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Enumerates all three modes with the exact condition that selects each ('equalize': ask what would make a draft acceptable; 'what_will_ai_give': from_us=true; 'what_does_ai_want': from_us=false). It also states the relationship to propose_deal, making the when-to-use decision explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notification_logA
The Notification Log: every notification the game still holds for me, newest first, including
ones already dismissed -- which is what the screen is for. turn_digest carries only what the
panel is currently showing, so something read once and dismissed is otherwise gone. Each row has
the turn it arrived on. limit is the newest N (default 40); include_dismissed=false keeps only the
ones still showing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| include_dismissed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose non-obvious behavior: newest-first ordering, inclusion of already-dismissed items by default, and that each row carries the turn it arrived on. It does not explicitly state the operation is read-only or describe result size/pagination beyond limit, so a small gap remains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the newest-first scope are front-loaded, and every sentence carries information. It is slightly discursive with the em-dash asides ("which is what the screen is for"), but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter read tool with no annotations and no output schema, the description covers both parameters, the row shape, and ordering. It could say more about what a row contains beyond turn, but nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% — the schema gives only titles and defaults — so the description must compensate, and it does: limit is the newest N with default 40, and include_dismissed=false keeps only notifications still showing, which also clarifies the true default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (the notification log) and states its exact scope: every notification still held, newest first, dismissed ones included. It is immediately distinguishable from the sibling turn_digest, which it names and contrasts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: turn_digest only carries what the panel currently shows, so anything read once and dismissed is otherwise gone — use this tool for that history. The selecting condition and the alternative are both stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ordersA
My conditional orders (see give_order) as stored, without reading the game: id, unit, status (active /
paused; completed, cancelled, replaced, failed once closed), step N of M and now (the current step),
steps, state (moving, building, healing, no_moves...), pause (kind, reason, hint, turn) when it waits
for me, last (the last step issued: turn, what, ok, err / note), issued_count (calls it made for me),
purpose. status: "open" (default), "closed" or "all". Usable while it is not my turn.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | open |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose meaningful behavior: it is a stored-record read that does not touch live game state ("as stored, without reading the game") and is usable off-turn, implying no side effects. It does not state permissions or any mutation risk, but for a read-oriented tool this is reasonable coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's identity and availability is stated early, which is good. However, the middle is a comma-spliced wall of field names that reads more like return-shape documentation than guidance, giving it a dense, slightly bloated feel.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description compensates by enumerating the returned fields (id, unit, status, steps, pause, last, issued_count, purpose) and the filter values. It is largely complete for a one-parameter read tool, with the main gap being no explicit routing versus sibling order tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter is undocumented in the schema, so the description must compensate. It does: it enumerates the accepted values "open" (default), "closed" and "all" for the status filter, which is what an agent needs to call it correctly, though it is muddled by reusing the word "status" for the order's own state field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description makes clear this returns the caller's stored conditional orders ("My conditional orders ... as stored"), and points at the sibling that creates them ("see give_order"), so an agent can tell it apart from give_order/resume_order/cancel_order. The phrasing is field-list heavy rather than a crisp verb+resource, but the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the availability window "Usable while it is not my turn," which is useful timing context. There is no explicit when-to-use-this-vs-other-tools guidance relative to siblings like assignments or resume_order, so it stays at implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
overviewB
My empire at a glance: gold, science, culture, happiness, research, era, counts, turn/year.
strategic_resources (revealed only) with available spare copies -- negative is a deficit: units and
buildings fight and produce at a penalty. luxuries with owned / imported / exported copies (last_copy
when selling one would drop the happiness bonus); bonus_resources the resource list's bonus stack.
The top-bar tooltips ride along: happiness_breakdown (with the Happiness screen's rows: by_luxury,
cities, unhappiness tooltips, the unhappy tier, penalties), gold_breakdown (income vs expenses, unit
maintenance), science_breakdown, culture_breakdown, tourism_breakdown, faith_breakdown;
unit_supply (Military Overview cap and deficit), score_breakdown, golden_age_progress /
golden_age_threshold. idle_trade_units lists caravans and cargo ships without a route (with in_city
and the nearest city to walk to: only one standing in my city can be given a route) and idle_spies
unassigned spies. Every key in detail: how_to_play("overview").
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose meaningful field semantics (negative `available` means a penalty, `last_copy` warns selling would lose the happiness bonus, `in_city` determines routability), which is real value. However, it never states that this is a side-effect-free read or mentions any prerequisites, so key behavioral traits remain implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with a good one-line summary, but the body is a dense run-on paragraph enumerating keys with no grouping or formatting, making it hard to scan. Every clause arguably earns its place as return-value documentation, but the structure wastes the reader's attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the sole documentation of what comes back, and it covers the top-level fields, breakdowns, and edge-case flags thoroughly. It defers exhaustive key detail to how_to_play, which is a reasonable division of labor, though a couple of fields (e.g. `unit_supply`, `score_breakdown`) are named without explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document; the baseline of 4 applies. The description instead spends its effort on return-value semantics, which is the right target here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause 'My empire at a glance' with an enumerated list of resources (gold, science, culture, happiness, era, turn) makes clear this is a read snapshot of empire state. It is specific about content but never contrasts itself with siblings like turn_status, demographics, or culture_overview, so an agent gets no help choosing among them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance; the only routing hint is 'Every key in detail: how_to_play("overview")', which points to a documentation sibling rather than stating a selection condition. The agent must infer that this is for periodic status checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playersA
HUMAN seats only (network/hotseat games): whether each is connected, has an active turn, and has ended
their turn. Like the in-game player list, a seat I have not met shows its name but not its civ. In a solo game this is just me. For the AI civs and city-states I have met -- their ids,
scores, war state -- use diplomacy; that is where player_ids for trade/diplomacy tools come from.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden, and it delivers: it discloses the returned fields (connected, active turn, ended turn), the visibility caveat (unmet seats show a name but no civ), and the solo-game degeneracy. It doesn't cover permissions, but for a parameterless read query the practical behavior is well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the scope constraint before the behavioral caveats and the routing hint. Every sentence carries distinct information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the sole source of return-value information, and it does describe the shape of the output and its visibility caveats. Minor gaps remain -- no output format or id details -- but nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. Nothing about parameters needs explaining, and the description does not waste words inventing any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: human seats with connection, active-turn, and turn-ended status. It explicitly contrasts itself with the `diplomacy` sibling, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative tool and the condition that selects it: 'For the AI civs and city-states I have met ... use `diplomacy`'. It also clarifies the inverse condition -- this tool is human seats only, and in solo play it is just the caller -- leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plunder_trade_routeB
Order a military unit standing on an enemy trade route to plunder it.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says it 'orders' a unit (a mutation) but never states consequences such as gold gained, whether it consumes the unit's action/movement, or whether it can be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the action front-loaded and no filler. Nothing redundant, though it errs toward being too terse for a mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no annotations or output schema, the description covers the core action but omits the outcomes and cost of plundering, which an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage. The description implies a military unit is the subject but adds no meaning about unit_id's format or how to identify the qualifying unit (e.g., via units/unit_mission_targets), leaving the schema to stand alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (plunder), resource (enemy trade route), and actor (military unit standing on it), which distinguishes it from establish_trade_route and the trade-routes query tools. Clear action, though it doesn't explicitly name siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a precondition for use (unit must be standing on an enemy trade route), which is useful implied guidance, but names no alternatives or when-not-to-use conditions relative to tools like move_unit or unit_mission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_dealA
Offer a trade to another civ. With an AI: drives the game's real leader / trade screens, proposes, reads
the reply, closes them and reports measured effects (gold, gold/turn, happiness, per-resource
import/export before vs after): nothing to poll afterwards. With another human seat: puts the same table
on the PvP deal screen (pvp: true, pending: true); that seat answers with accept_deal / refuse_deal.
items: [{"type":"RESOURCES","resource":"RESOURCE_DYE","from_us":true,"amount":1},
{"type":"GOLD_PER_TURN","from_us":false,"amount":5}]
Types: GOLD / GOLD_PER_TURN (amount), RESOURCES (resource, amount), OPEN_BORDERS, ALLOW_EMBASSY,
DEFENSIVE_PACT, RESEARCH_AGREEMENT, TRADE_AGREEMENT (from_us picks the direction), CITIES (city_id),
VOTE_COMMITMENT (resolution_id, choice_id, repeal), THIRD_PARTY_WAR / THIRD_PARTY_PEACE (other: player
id), PEACE_TREATY (implied while at war: any deal then is peace with terms; or make_peace).
Read trade_catalog(player_id) first: what is legal, how much gold each side can put up, which cities may
be traded (capitals never), the vote and third-party rows. Lump-sum gold needs a Declaration of Friendship
(a Brave New World rule; trade_catalog's gold.note says so); gold per turn is not gated. Refuses without
opening a screen an amount that is not a positive whole number or beyond what that side has, a city
outside the catalog, or an item that does not land on the table at the requested amount. ask_counter=true
also returns the AI's counter-offer (counter.items), which can go straight back in. Timed items last the
game's deal length (30 turns). Item rules in full: how_to_play("propose_deal").
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| player_id | Yes | ||
| ask_counter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it lists what gets refused (non-positive/non-integer amounts, over-budget amounts, off-catalog cities), the Declaration of Friendship gate for lump-sum gold, the 30-turn timed-item length, and that measured effects are reported with nothing to poll afterwards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and long, but the core action is front-loaded in the first sentence and the rest is load-bearing detail rather than filler. It could be trimmed (e.g. the parenthetical about Brave New World rules), so it is efficient but not maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains the reported effects (gold, gold/turn, happiness, per-resource import/export before vs after) and the full item rule set. For a 3-parameter mutation with zero schema documentation, nothing an agent needs to call it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema is essentially bare (items is an untyped object array), so the description must compensate. It enumerates every item type with their sub-fields, explains from_us as the direction selector, and defines ask_counter=true as returning counter.items that can be fed straight back.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Offer a trade to another civ") and then distinguishes itself from the answering siblings by explaining that the counterpart seat replies with accept_deal / refuse_deal. The two-seat behavior (AI vs human) further separates it from generic diplomacy tools like negotiate_deal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite ("Read trade_catalog(player_id) first") and states the conditions that change behavior (human seat → pvp/pending; ask_counter=true → counter-offer). It never explicitly says when to prefer this over negotiate_deal, so it falls short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_friendshipA
Ask an AI civ for a Declaration of Friendship (the leader screen's "work together"). Refused when already friends, asked too recently, at war or unmet. The reply says whether they accepted. Declarations expire after their term (a "Declaration of Friendship Has Expired" notification) -- this is how to renew one.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it lists refusal conditions, states the reply reports acceptance, and explains the expiry/renewal lifecycle. It omits any note on turn cost, side effects of acceptance, or permissions, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, followed by refusal conditions and lifecycle. Every sentence adds information; nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, so the description must cover behavior, and it addresses refusal conditions, the acceptance reply, and expiry/renewal. It is largely complete for a single-parameter diplomatic action, missing only fine-grained return detail or side-effect disclosure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage, so the description must compensate. It implies player_id identifies the target AI civ ('Ask an AI civ'), but never names or explains the parameter, its format, or how to obtain valid IDs. Minimal over-schema value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (ask for) and resource (Declaration of Friendship), and grounds it in the game's UI ('the leader screen's work together'). An agent can distinguish this from the sibling accept_friendship, which is the receiving side of the same mechanic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not conditions (already friends, asked too recently, at war, unmet) and clarifies this is the way to renew an expired declaration. It lacks an explicit pointer to alternative diplomacy tools, but the refusal conditions and renewal context make usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purchase_costA
Read-only: cost to rush-buy item (UNIT_.../BUILDING_...) with gold or faith right now, and whether
it's actually purchasable. yield_type is "GOLD" (default) or "FAITH". Wonders (built via a BUILDING_* item
too) are never purchasable in vanilla BNW -- can_purchase will read false. Check this before purchase_production.
A refusal carries reason and, when the engine has one, engine_reason: the same sentence the
production popup puts under a greyed-out purchase button.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| city_id | Yes | ||
| yield_type | No | GOLD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does it well: it self-declares read-only, describes what a refusal carries (`reason` and `engine_reason`), and warns that Wonders are never purchasable. Adding the engine_reason semantics is genuine context beyond structured fields, though it stops short of pagination/latency/other operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the key fact ("Read-only: cost to rush-buy...") before branching into details. Sentences are dense but each earns its place; the engine_reason sentence is slightly verbose but informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description still explains the returns (cost, can_purchase) and the refusal shape (reason, engine_reason). Combined with the read-only declaration, an agent has enough to call it correctly, though city_id and any error/pagination behavior go unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and largely does: it explains the item identifier format (UNIT_.../BUILDING_...) and the yield_type values (GOLD default or FAITH). Only city_id is left undocumented, which is a minor gap given its obviousness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reports the rush-buy cost of an item and whether it is purchasable. It explicitly differentiates itself from the sibling purchase_production by telling the agent to check this first, so the agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule ("Check this before purchase_production") and a usage caveat (Wonders are never purchasable, so can_purchase reads false). It names the alternative but does not spell out when-not to call it in general terms, keeping it just short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purchase_productionA
Rush-buy a unit or building (item like UNIT_WARRIOR, BUILDING_MARKET) with gold or faith (yield_type "GOLD", the default, or "FAITH"). See purchase_cost for price/affordability first. Wonders can never be purchased this way.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| city_id | Yes | ||
| yield_type | No | GOLD |
TDQS
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 usefully discloses that wonders are ineligible and that yield_type defaults to GOLD, but says nothing about what happens on insufficient funds, whether the purchase is immediate/permanent, or any turn-timing constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core action, followed by prerequisite and exclusion. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description covers purpose, prerequisite, exclusion, and the ambiguous parameters adequately for an agent to call it. It stops short of describing outcome behavior (e.g. instant completion, error on insufficient gold/faith), which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for the two non-obvious params: item is illustrated with concrete examples and yield_type is given both its allowed values and default. Only city_id is left unaddressed, which is self-evident from the name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Rush-buy') plus the resource being bought ('a unit or building') and the payment mechanism, with concrete item examples (UNIT_WARRIOR, BUILDING_MARKET). An agent can distinguish it from production-setting siblings like set_production or available_production immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to purchase_cost for price/affordability and gives a hard exclusion ('Wonders can never be purchased this way'). Clear context and a named alternative, though it doesn't cover edge cases like when faith vs gold is preferable or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quick_saveA
Save the game right now (same as the in-game Quick Save / F5). Cheap -- call it after anything costly (founding a city, a policy/research choice, before combat), not just periodically, since a crash loses everything back to the engine's last autosave otherwise.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries full burden. It discloses cost ('cheap'), the side effect of overwriting/creating a save, and the practical consequence tied to crash recovery. It doesn't state where the save lands or whether it overwrites an existing slot, but the key behavior is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its game equivalent, followed by the usage rule and rationale. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-arg, no-output tool with no annotations, the description covers action, equivalence, cost, and the triggering conditions that make the tool useful. Nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters; baseline is 4, and the description goes further by mapping the tool to the in-game F5 binding, which is the only 'parameter-like' information relevant here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (save) and resource (the game), with the exact in-game equivalent (Quick Save / F5). No sibling tool in the list does this specific action, so it's clearly distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names when to call it: after anything costly (founding a city, policy/research choice, before combat), rather than periodically, with a stated reason (crashes lose everything back to autosave). This is unusually actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recallA
Read my notebook for this game (see remember): every note with its id, the turn it was written on
and its tag; tag filters, limit is the newest N (default 50). The last few also arrive with each
finish_turn result. Usable while it is not my turn.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden and does so reasonably: 'Read' implies non-mutating, the turn-availability restriction is disclosed, and the redundancy with finish_turn output is surfaced. It stops short of describing pagination/ordering beyond 'newest N' or what happens with an empty notebook.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose and return shape come first, then filtering, then the timing caveat. The semicolon-chained clauses are slightly awkward but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description supplies return contents (id, turn written, tag), defaults, filtering behavior, and a usage constraint. Adequate for a 2-param read tool, though edge behavior (empty result, ordering beyond 'newest') is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it explains `tag` acts as a filter and that `limit` returns the newest N with a default of 50. Both parameters get meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (notebook/notes), and cross-references the sibling `remember` that creates those notes. An agent can distinguish it from remember/forget without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit timing condition ('Usable while it is not my turn') and notes that the last few notes already arrive with each finish_turn result, implicitly telling the agent when a call may be unnecessary. No explicit when-not or named alternatives (e.g. forget) beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
referenceA
The rule book, as Markdown: what every unit, building, wonder, project, process, promotion, social
policy and ideology tenet, technology, belief, resource, terrain, feature, improvement, specialist and
unit action does, read once from this game's own database (mods and DLC included) and cached. No other
answer repeats this text (since runtime v216): chooser rows carry the enum, the name and live numbers,
and a resource tile carries its resource name. Sections, one per call with section: terrain,
resources, improvements, units, buildings, projects, processes, promotions, policies, techs, beliefs,
specialists, actions. The whole book is long (tens of thousands of tokens): read it once at the start of
a game if you can hold it, otherwise the section a choice needs. Also served as the MCP resources
civ5://reference and civ5://reference/{section}. Usable while it is not
my turn.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does so well: it discloses that content is cached, sourced from the game's database with mods and DLC included, served one section per call, that the text is very large (tens of thousands of tokens), that it is mirrored as MCP resources, and that it can be called outside the player's turn.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the usage rule, and most sentences carry unique information. Slight redundancy: the long enumeration of covered content in the opening sentence duplicates the section list that follows, which a reader could skip.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description still covers return format (Markdown), size, caching, alternate resource URIs, and turn-timing constraints, so an agent knows what to expect. It does not spell out error behavior for an invalid `section` value, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single `section` parameter has 0% schema description coverage, but the description compensates by enumerating allowed values (terrain, resources, improvements, units, buildings, projects, processes, promotions, policies, techs, beliefs, specialists, actions) and stating the one-section-per-call rule. Minor mismatch: the prose names categories like wonders, features and technologies that are absent from the enumerated section list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: it returns the game's rule book as Markdown covering every unit, building, wonder, tech, belief, etc., read from the game's own database and cached. It also explicitly distinguishes itself from siblings by noting that no other answer repeats this text (chooser rows carry the enum/name/live numbers instead).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition for use ('read it once at the start of a game if you can hold it, otherwise the section a choice needs') and an alternative delivery channel (MCP resources civ5://reference). It also states a timing constraint ('Usable while it is not my turn') and that sibling tools do not contain this text. No explicit when-not-to-use case beyond the token-size warning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refuse_dealA
Refuse an incoming trade already on the table (see incoming_deal). Does not construct a new deal. When another leader is queued behind this one (several can wait at a turn start), the answer carries
still_pending: true, next (their screen, words, buttons and the deal on the table) and the gate it
raises: answer that one next, no discussion() read needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does disclose meaningful behavior: the refusal consumes a pending deal and, when leaders are queued, returns still_pending/next/gate. It omits any diplomatic consequence of refusing (e.g. relationship effects), which for a refusal tool would be the one remaining behavioral trait worth naming.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and its scope, then adds the queue branch. The second sentence is long and packs several return fields, but each clause adds information about the response, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description compensates by describing the returned still_pending/next/gate fields, which an agent needs to continue the interaction. The gap is the absence of any stated side effect or consequence of refusing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is no argument surface the description could or should elaborate, and the schema correctly forbids additional properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Refuse') plus a precisely scoped resource ('an incoming trade already on the table') and explicitly contrasts with sibling behavior ('Does not construct a new deal'), routing the agent away from propose_deal/negotiate_deal. Cross-references incoming_deal for the source of the deal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The condition for use is clear: only when a deal is already on the table, with incoming_deal named as the companion read. It also covers the multi-leader queue case and tells the agent to answer the next one without a discussion() read. No explicit when-not guidance beyond 'does not construct a new deal'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
relationshipB
Our standing with one civ or city-state: their visible approach toward us, friendship /
denouncements / embassies / open borders / research agreement / defensive pact, the opinion lines
the game shows, their public relations with every civ we have met (wars, friendships,
denouncements, city-state alliances) and the recent messages they sent us. discuss lists the
Discuss-screen buttons a human would see (share intrigue, stop spreading religion, stop spying,
don't settle, stop digging, declare friendship). discussion() includes this for the leader on screen; call it
directly before proposing or answering anything.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the scope and content of the returned data (good behavioral context about what you'll see), but never states that the operation is read-only, requires no permissions, or what happens for unmet civs — leaving the safety/mutation profile to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads the primary content ('our standing with one civ or city-state') before listing specifics. No filler, though the mid-paragraph jump to `discussion()` is slightly jarring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description rightly describes the return payload in detail and even covers the `discuss` button list. The remaining gap is the completely undocumented player_id, but the return-value side is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (player_id) with 0% schema description coverage, and the description never names or explains it. 'One civ or city-state' implies the target is selected, but the agent gets no confirmation that player_id is the selector or what values it accepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a read of diplomatic standing with a specific civ or city-state and enumerates the data returned (friendship, denouncements, embassies, opinion lines, PR status, recent messages). It partially distinguishes itself from the sibling `discussion`/`discussion()` tools, though the core verb ('get/view our standing') is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a usage cue — 'call it directly before proposing or answering anything' — and links to `discussion()`, but the referent of 'it' is ambiguous and no when-not-to-use guidance or clear alternative selection is provided. The routing intent is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
religion_overviewA
Religion Overview screen: faith, next Great Prophet threshold, my pantheon/religion and beliefs, all founded
religions with their beliefs and city counts, per own city the followers and pressure of each religion, and
auto_purchase: the automatic faith purchase pull-down (current selection and every option it lists with
its faith cost; change it with set_faith_purchase).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It implies a read-only overview by listing returned data and directing changes to set_faith_purchase, but it does not explicitly state that the tool has no side effects or what permissions/constraints apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that lists the returned fields efficiently. It is dense but not padded, and the alternative tool for changing auto_purchase is placed at the end of the relevant clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain the return contents, and it does so comprehensively: faith, Great Prophet threshold, pantheon/religion beliefs, all founded religions with beliefs and city counts, per-city followers and pressure, and auto_purchase options with faith costs. This is complete for a parameterless overview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no input parameters, so there is no parameter semantics to explain. The baseline for zero parameters is 4, and the description appropriately focuses on returned screen content instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource ('Religion Overview screen') and enumerates exactly what it contains: faith, Great Prophet threshold, pantheon/religion beliefs, founded religions, city followers/pressure, and auto_purchase options. It also distinguishes the mutation sibling by stating that auto_purchase can be changed with set_faith_purchase.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates the tool is for reviewing religion data and explicitly routes the one mutation case to set_faith_purchase. It does not give broader when-to-use guidance against other religion tools such as found_pantheon or enhance_religion, 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.
rememberA
Write a note to my notebook for this game: the plan, a promise, a threat, why I did something
("Tradition then Rationalism", "Askia denounced me t140: expect a DoW", "keep 2 archers in Moson Kahni").
Notes survive session restarts and context loss: they live beside the game (one notebook per game and
seat, keyed by leader/civ/map/capital), and the latest ones ride along in every finish_turn result.
tag groups notes (plan, threat, diplomacy, todo...). replace_id rewrites an existing note in place, so a
living plan stays one note instead of a trail of superseded ones; the result carries previous (the
text, tag and turn it overwrote). A replace whose tag differs from the stored tag is refused with
stored_tag and writes nothing (the id was probably wrong); an empty tag keeps the stored tag, and
retag=true allows the change. Usable while it is not my turn.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| text | Yes | ||
| retag | No | ||
| replace_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: notes survive session restarts and context loss, one notebook per game/seat keyed by leader/civ/map/capital, latest notes appear in finish_turn output, the refusal semantics on tag mismatch ("refused with `stored_tag` and writes nothing"), empty-tag fallback, retag override, and that the result carries `previous`. This is unusually complete behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and examples before the persistence/hook explanation and the replace semantics, so an agent gets the gist immediately. The parenthetical examples are dense but earn their place by showing tag usage; only mild compression could improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations exist, yet the description covers persistence, storage keying, the finish_turn integration, tag grouping, replace/retag semantics and refusal behavior. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it does: tag is explained as a grouping concept, replace_id as in-place rewrite of an existing note, retag as the flag permitting a tag change, and text via worked examples. Every parameter's meaning and edge-case behavior is documented beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Write a note to my notebook for this game") and immediately distinguishes itself from the sibling memory tools (recall/forget) by describing persistence and keying. An agent can tell this is the write-side of a notebook primitive without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete context and examples of what to store (plan, promise, threat, rationale) and states a temporal constraint ("Usable while it is not my turn"), plus that notes ride along in every finish_turn result. It stops short of explicitly naming recall/forget as the read/delete alternatives, so routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_queueA
Drop one item from a city's production queue (the city screen's click on a queued item). position is
1-based as set_production's queue and city_screen list it: 1 is what the city is building now, 2 the item
behind it. The reply names removed and the queue left; when nothing is left the city needs
set_production before the turn can end. Re-setting an item already queued is refused ("already in this
city's production queue (position N)"): remove it here first, or set_production another item.
| Name | Required | Description | Default |
|---|---|---|---|
| city_id | Yes | ||
| position | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses the response shape ('names `removed` and the `queue` left'), the exact refusal message for a conflicting set_production call, and the downstream consequence of an empty queue. It stops short of stating reversibility/permission requirements, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action, then the parameter convention, then the return/refusal behavior in three tight sentences. The quoted error string and parenthetical anchor are worth their length because they disambiguate real agent failure modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so explaining the reply's `removed`/`queue` fields is exactly the right compensation, and the empty-queue/turn-end interaction is a genuinely load-bearing detail. Complete enough to call correctly; only edge cases like invalid positions are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does for the non-obvious parameter: position is 1-based, 1 = currently building, 2 = next, tied to how set_production's `queue` and city_screen list items. city_id is left implicit, but its meaning is unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Drop one item from a city's production queue') and immediately differentiates itself from set_production by framing itself as the inverse operation. An agent can tell exactly what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditional guidance: re-setting an already-queued item is refused, so 'remove it here first, or set_production another item.' It also names the follow-up requirement when the queue empties (set_production before the turn can end), routing the agent to the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
respond_discussionA
Press one of the response buttons listed by discussion() (1-4). Use this for AI demands,
warnings, requests and post-deal remarks that offer choices such as apologise / dismiss / threaten.
expect: optional words the button's text must contain (e.g. "no interest"); if it does not, nothing is
pressed and the real buttons come back -- guards against pressing a remembered id on a different screen. When another leader is queued behind this one (several can wait at a turn start), the answer carries
still_pending: true, next (their screen, words, buttons and the deal on the table) and the gate it
raises: answer that one next, no discussion() read needed.
| Name | Required | Description | Default |
|---|---|---|---|
| expect | No | ||
| button_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden, and it delivers meaningful behavioral detail: the expect guard explains that a mismatch presses nothing and returns the real buttons, which is a genuine safety/verification behavior. It also documents the multi-leader return behavior (still_pending, next, gate). It does not say whether a press is irreversible or what happens on an invalid button_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then expect semantics, then the queued-leader behavior. Dense but every clause carries operational information (guard behavior, ids range, return fields); nothing is restated from the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the return signals (still_pending, next, gate) and the mismatch path. For a two-parameter, no-annotation interaction tool, an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for expect: purpose (words the button text must contain), an example ('no interest'), and the fallback behavior on mismatch. button_id gets its valid range (1-4) and its source, though not its failure mode for out-of-range or stale ids.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (press one of the response buttons) with its source (listed by discussion(), ids 1-4) and its domain (AI demands, warnings, requests, post-deal remarks). An agent can distinguish this from discussion() reads, dismiss_discussion, and answer_popup without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use (dialogue screens offering choices such as apologise / dismiss / threaten) and names the upstream tool that supplies valid ids, plus the multi-leader sequencing rule ('answer that one next, no discussion() read needed'). It does not explicitly rule out cases or name siblings like dismiss_discussion/answer_popup as alternatives, so it stops short of a full when/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_orderA
Hand a paused order its unit back and run it now (an active one just runs now). What paused it -- the hostiles in sight, the hp now -- is taken as seen, so only something new pauses it again. Every step is re-checked against the board first: a step completed meanwhile is not issued again. To change the plan instead, give_order with replace_id.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that pause causes (hostiles, hp) are taken as seen so only a new cause re-pauses, that every step is re-checked against the board, and that already-completed steps are not re-issued. That is meaningful non-obvious 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary action is front-loaded, followed by behavior and then the alternative tool, so it is well-ordered. It is somewhat longer and more colloquial than needed ('the hostiles in sight, the hp now'), but nearly every clause conveys distinct behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no annotations and no output schema, the description covers the key behavioral contract (pause semantics, idempotent step re-checking, alternative tool). The remaining gap is the undocumented order_id, which is the one thing an agent must supply correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter (order_id) is never described in the description either, so there is no guidance on where the ID comes from (e.g., the orders tool) or its expected format. The description's use of 'order' gives only implicit context and does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Hand a paused order its unit back and run it now') and immediately clarifies the active-order case in parentheses. It is clearly distinguishable from siblings like give_order, cancel_order, and orders without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to the alternative: 'To change the plan instead, give_order with replace_id.' It also states the condition distinguishing resume from give_order (resuming keeps the existing plan; give_order with replace_id changes it), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revealed_mapA
The whole revealed map at a glance, as character grids: one string per row (north first), one
character per plot, one grid per layer. Layers: vis ('#' in sight now, '~' revealed but fogged:
what you see there is what was last seen and may be stale until a unit gets eyes back on it, ' '
unrevealed), terrain, elevation (hills/mountain), river, owner (borders), feature, improvement,
resource, route. Each reply carries its own legend (letters are assigned per reply). Fog rules are
the human's: a fogged plot shows remembered feature/improvement/route/owner, never live units or
pillage. Pass layers to fetch a subset and x0/y0/x1/y1 to window a large map (a Huge map after
Satellites is about 10 KB per layer). map_window(x, y, r) reads one area in full; map_index lists
cities, camps and resources with coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| x0 | No | ||
| x1 | No | ||
| y0 | No | ||
| y1 | No | ||
| layers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: it explains fog semantics ('~' revealed but stale, '#' in sight now), what fogged plots remember versus never show, that each reply carries its own legend, and that a Huge map after Satellites is about 10 KB per layer. This is unusually transparent for a read-only map 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: it starts with the core output format and layers before moving to fog rules, sizing, and alternatives. Some phrasing is compressed ('Fog rules are the human's'), and the single long paragraph could be structured more scannably, but little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex map-retrieval tool with no output schema and no annotations, the description is complete: it describes the return format, every layer, fog behavior, legend behavior, sizing expectations, subsetting and windowing, and sibling alternatives. An agent has enough information to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the role of all five parameters: `layers` fetches a subset, and x0/y0/x1/y1 window a large map. It does not spell out default omission behavior or coordinate inclusivity, but the intended use of each parameter is clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific retrieval resource and its exact output shape: 'The whole revealed map at a glance, as character grids: one string per row (north first), one character per plot, one grid per layer.' It also distinguishes its scope from siblings by naming map_window for one-area reads and map_index for coordinates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes between alternatives: use this for the whole map, pass `layers` for a subset and x0/y0/x1/y1 to window a large map, use map_window for one area in full, and use map_index for cities, camps, and resources with coordinates. The conditions for choosing each sibling are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sell_buildingA
Sell one building in one of my non-puppet cities (the city-screen click-to-sell).
city_screen lists can_sell / sell_gold / gold_maintenance. Usually one sell per city per turn.
| Name | Required | Description | Default |
|---|---|---|---|
| city_id | Yes | ||
| building | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It usefully discloses the non-puppet restriction and the one-sell-per-city-per-turn rate limit, but never states that the sale is irreversible / removes the building or whether `sell_gold` is the returned benefit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the action and scope front-loaded; the parenthetical and the per-turn caveat each add real information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param mutation with no annotations, no output schema, and no documented parameters, the description supplies constraints and a discovery pointer but omits what the call returns (`sell_gold`) and any failure conditions, leaving gaps an agent would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for both parameters. The description hints that valid buildings can be discovered via city_screen's `can_sell`, which partially compensates for `building`, but gives no format or sourcing for `city_id`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Sell one building') plus scope ('one of my non-puppet cities'), and identifies the equivalent UI action. No sibling tool covers selling buildings, so the agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions (city must be non-puppet, usually one sell per city per turn) and routes the agent to city_screen to check `can_sell` before acting. It stops short of naming a concrete alternative action when a building is not sellable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_auto_specialistsB
Enable or disable automatic specialist assignment in an owned, non-puppet city.
| Name | Required | Description | Default |
|---|---|---|---|
| city_id | Yes | ||
| automatic | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the ownership/non-puppet constraint, but says nothing about whether the toggle overrides existing manual specialist assignments, whether it requires a specific game phase or permission, or whether the change 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is tight, though the brevity edges toward under-specification rather than ideal economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% schema description coverage, this is too thin. An agent learns the precondition but not the effects, prerequisites, or interaction with manual specialist assignment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must supply meaning. It conveys that 'automatic' is a boolean enable/disable toggle and that city_id must refer to an owned, non-puppet city, which adds real semantics beyond the bare 'City Id'/'Automatic' titles, but it gives no format or edge-case detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (enable/disable) and resource (automatic specialist assignment) with a clear scope constraint (owned, non-puppet city). It is distinguishable from the manual sibling change_specialist, though it does not name that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition 'owned, non-puppet city' implies when the tool applies, but there is no explicit when-to-use guidance, no mention of alternatives such as change_specialist or set_city_focus, and no note about what happens when the setting is toggled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_avoid_growthB
Toggle avoid-growth on one of my (non-puppet) cities (the city-screen checkbox).
| Name | Required | Description | Default |
|---|---|---|---|
| avoid | Yes | ||
| city_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that this is a toggle affecting a city checkbox and is restricted to non-puppet cities, but says nothing about permissions, reversibility, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no redundant or filler content. The key operation is stated first, followed by scope and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter toggle with no annotations, no output schema, and no field descriptions, the description gives minimal but usable context. It is enough to select the tool and attempt a call, but leaves gaps around parameter semantics and behavioral side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both required parameters. The description implies city_id must refer to a non-puppet city, but does not clarify avoid=true/false semantics, valid ranges, or how the boolean relates to the checkbox state, leaving key parameter meaning undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (toggle) and resource (avoid-growth), and narrows scope to one of 'my (non-puppet) cities'. It is clear enough to distinguish from sibling city-management tools, though it does not explicitly name or contrast a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies the tool is used for the city-screen checkbox and restricts operation to non-puppet cities, but gives no explicit when-to-use or when-not-to-use guidance relative to alternatives like set_city_focus or city_task. The usage is implied rather than stated.
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 citizen focus on one of my (non-puppet) cities. focus is one of: balanced, food, production, gold, science, culture, great_people, faith. Same as the city-screen focus buttons.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | Yes | ||
| city_id | Yes |
TDQS
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 does not state whether the focus change takes effect immediately or on the next turn, whether it is persistent, what happens to existing specialist assignments, or what the response looks like. The 'Same as the city-screen focus buttons' hint is helpful but skeletal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences that front-load the action and scope, then immediately provide the required enumeration and a useful analogy. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a state-changing action with no annotations, no output schema, and 0% schema description coverage. The description covers the critical 'focus' enumeration but leaves 'city_id' unexplained and omits any behavioral notes about persistence or side effects. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with two parameters, so the description must compensate. It successfully enumerates the eight allowed values for the 'focus' parameter, which is critical. However, the 'city_id' parameter is completely unexplained – the description does not clarify its format or how to discover valid IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) and resource (citizen focus) scoped to 'one of my (non-puppet) cities,' and enumerates the eight valid focus values. The clause 'Same as the city-screen focus buttons' anchors the tool to a known UI action, distinguishing it from siblings like set_production or change_specialist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(non-puppet)' implies a scope restriction, and the description effectively says to use this when you want to set a city's focus. It does not name alternatives or explicitly state when not to use it (e.g., for puppet cities).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_faith_purchaseA
The Religion Overview's automatic faith purchase pull-down. kind is nothing, save_prophet,
unit or building; index is the unit/building id from religion_overview().auto_purchase.options
(each option lists its faith cost). Refused for anything the pull-down does not currently list.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| index | No |
TDQS
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 does disclose an important failure mode (the call is refused for unlisted options) and enumerates accepted values, which is more than nothing. But it says nothing about permissions, side effects on existing settings, or what happens to the current selection, leaving meaningful gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the tool's identity and immediately followed by the enum values and index source. No filler, and the guard clause closes it out. The dense backtick notation is slightly cryptic but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity two-parameter mutation tool with no output schema and no annotations, the description covers purpose, allowable values, value source, and the refusal condition. It omits return/effect confirmation, which is a minor gap given there is no output schema to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with no enums in the schema, so the description must compensate, and it largely does: it lists the valid `kind` values (nothing, save_prophet, unit, building) and explains `index` as the unit/building id drawn from religion_overview().auto_purchase.options. It does not clarify when `index` is meaningful or what the default 0 implies, but this is strong compensation over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it sets the Religion Overview's automatic faith purchase pull-down. The valid `kind` values are enumerated, so an agent can tell this configures an auto-purchase setting rather than performing a purchase or choosing a great person. It does not explicitly contrast with nearby siblings like choose_faith_great_person or religion_overview, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by pointing to religion_overview().auto_purchase.options as the source of valid index values, and the final sentence gives a real constraint: 'Refused for anything the pull-down does not currently list.' However, it never explicitly frames when to reach for this tool versus the sibling selection tools. Guidance is present but partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_productionA
Set a city's production. item like UNIT_WARRIOR, UNIT_SETTLER, BUILDING_MONUMENT, PROJECT_..., PROCESS_WEALTH.
append=true queues it behind the current build (the production screen's shift-click) instead of replacing
it; the reply lists the whole queue.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| append | No | ||
| city_id | Yes |
TDQS
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 the key mutation semantics (replace vs. queue) and the return shape ('the reply lists the whole `queue`'), which is genuinely useful behavioral context. It omits permission/auth prerequisites and what happens to a partially-built item when replaced, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with purpose, then item syntax, then the append distinction. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states that the reply returns the full queue. For a simple 3-parameter mutation tool this is nearly complete; only permission requirements and the fate of an in-progress build are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it documents valid `item` value patterns (UNIT_*, BUILDING_*, PROJECT_*, PROCESS_*) and fully specifies the non-obvious `append` flag semantics. Only `city_id` is left implicit, which is self-evident from its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set a city's production') and enumerates the valid item categories, which distinguishes it from remove_from_queue and purchase_production. It does not explicitly name those siblings, so an agent must infer the boundary, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The append flag is explained in operational terms: append=true queues behind the current build (the shift-click equivalent) rather than replacing it. This gives clear context for choosing between the two modes, though no alternative tools (e.g. remove_from_queue, available_production) are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_researchA
Choose current research, e.g. TECH_POTTERY, TECH_MINING, TECH_BRONZE_WORKING. Also the way to claim a
free technology (blocking_name ENDTURN_BLOCKING_FREE_TECH, e.g. Oxford University): the named tech is
granted outright (granted), current research is left as it was. A tech whose prerequisites are
missing works like clicking it in the tech tree: the game researches the first missing step now and
queues the rest (goal, queue in the reply).
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that a free tech is granted outright while current research is left unchanged, and that missing prerequisites cause the game to research the first missing step now and queue the rest. It also names reply fields (`granted`, `goal`, `queue`), which is meaningful behavioral context beyond a bare mutation claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary action, then the free-tech special case, then the prerequisite fallback. Dense with jargon but every sentence adds actionable behavior; only mild readability cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations exist, and the description compensates by describing the reply fields and the two distinct code paths (normal research vs. free-tech grant vs. queued prerequisites). Complete enough for correct invocation, though it doesn't state valid-value sources or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single `tech` param has no description, so the description must compensate. It does: example values (TECH_POTTERY, TECH_MINING) show expected format, and the special ENDTURN_BLOCKING_FREE_TECH sentinel is explained, including its distinct semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Choose current research') and gives concrete example values, so the agent knows this sets the active research target. It also surfaces a second, non-obvious purpose (claiming a free technology), which is useful disambiguation from siblings like choose_free_great_person or available_research, though it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use the tool (picking a research target, or passing the ENDTURN_BLOCKING_FREE_TECH blocking name to claim a granted tech), and explains the missing-prerequisite scenario. But it never points to available_research/tech_tree as the source of valid values and gives no when-not guidance, so usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_seatA
Change which player this server plays, or re-detect it (player_id omitted). Needed when every tool
answers "this seat is not active" although the game is waiting for a human: the server was started
with --seat auto before the game was up, or a hotseat save was loaded and auto's default (seat 1) is not
the seat on screen. Only a seat the engine considers human can be chosen; the answer lists human_seats.
With no player_id: solo and network games re-run detection; hotseat takes the seat on screen when it is
human. The notebook follows the seat (one notebook per game and seat). Usable while it is not my turn.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so: it discloses the constraint (only an engine-recognized human seat can be chosen), the answer field human_seats, mode-dependent no-arg behavior (solo/network re-detect vs hotseat uses on-screen seat), the notebook side effect, and that it is usable out of turn.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then layers conditions and side effects, with every sentence carrying information. It is dense and somewhat long, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema tool in a complex game domain, it covers purpose, trigger, constraints, and the relevant return hint. Minor gaps remain about failure modes (e.g. what happens if an invalid or non-human id is passed).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must define player_id, and it does: omitted means re-detect, present means choose a seat the engine considers human. It stops short of stating where valid ids come from beyond referencing the human_seats answer field, leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change which player this server plays') plus the re-detection variant, which is a distinct operation rather than a vague restatement. An agent can tell exactly what the tool mutates in the game session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit triggering condition ('Needed when every tool answers "this seat is not active" although the game is waiting for a human') and names the concrete causes (--seat auto started too early, hotseat save with wrong default seat). This is unusually actionable when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_swappable_great_workB
Swap tab pull-down: put one of our works of work_class (writing / art / artifact) up for
swapping, or pass -1 to clear that spot. Candidates are culture_works().swap.ours[class].candidates.
| Name | Required | Description | Default |
|---|---|---|---|
| work_id | No | ||
| work_class | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that -1 is a clearing sentinel and where candidates are drawn from, but says nothing about reversibility, permission/prerequisite conditions, or what the swap slot state looks like after the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the clearing rule and candidate source. Some phrasing ('Swap tab pull-down') is interface jargon that costs clarity without adding much.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter game action with no output schema and no annotations, the description covers the essentials but leaves work_id's positive-value semantics and the relationship to swap_great_works unexplained, which is a real gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It supplies the enum for work_class (absent from the schema) and explains work_id = -1 as a clear sentinel, but never explains what a positive work_id refers to or how it relates to the candidates list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (put a work up for swapping / clear the spot) and resource (a great work of a given class), and enumerates the work_class values (writing / art / artifact), which is more than the schema gives. It doesn't clearly separate itself from the sibling swap_great_works, so an agent still has to infer the division of labor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '-1 to clear that spot' clause is genuine usage guidance for one parameter value, and pointing at culture_works().swap.ours[class].candidates tells the agent where candidates come from. However there is no explicit when-to-use-this vs swap_great_works guidance, so routing between the two swap tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spaceship_statusA
Science-victory progress: whether the Apollo Program is done, for each spaceship part how many are needed,
already in the ship, built but not yet delivered to the capital, and which tech unlocks it; plus met rivals
that finished Apollo and how many parts they have (the Victory Progress screen's space race). complete once
every part is in the ship, with game_over (the win ends the game at once) and a note on the last part's
unit, which the engine never gets to remove.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden, and it does disclose non-obvious behavior: `complete` only when every part is in the ship, `game_over` ends the game immediately, and the last part's unit is never removed by the engine. It does not explicitly state the operation is non-mutating/read-only, but for a status query the disclosure is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and packed with substance; the second sentence is dense and run-on, but every clause carries information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must describe return content, and it enumerates the key fields and semantics (part counts, tech unlock, rival progress, complete/game_over). It stops short of describing the exact response shape, but covers what an agent needs to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so baseline 4 applies; there is nothing for the description to compensate for and no parameter ambiguity to introduce.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the specific resource and scope: 'Science-victory progress' with per-part counts (needed, in ship, built-not-delivered, unlocking tech) plus rival Apollo completion. This is clearly distinguishable from sibling status tools like domination_progress or overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the framing ('the Victory Progress screen's space race'), so an agent can infer this is a read-only status check, but there is no explicit when-to-use, no exclusions, and no named alternative to route against.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spiesA
My spies: agent_id, name, rank, state, where stationed, and can_stage_coup. In a city-state the
row carries the coup button's hover: coup_chance (percent) when it is enabled, otherwise
coup_why_not (spy_dead / surveillance_pending / no_ally / we_are_ally) and coup_ally. In a
foreign major city the row carries city_potential, the potential meter's hover: state
potential (effective potential, base_potential, building/wonder/policy modifiers,
catch_spies lines), cannot_steal, once_known or unknown. See available_spy_cities/move_spy/
stage_coup for actions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does well: it discloses that the returned row shape varies by context (city-state rows carry coup_chance vs coup_why_not/coup_ally; foreign-city rows carry city_potential with state/base/modifier breakdown and visibility flags). What it omits is the safety profile — nothing explicitly says this is a non-mutating read with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is dense and front-loaded: the field list and the two context-dependent row variants come first, and the pointer to action siblings closes it. No sentence is filler, though the run-on enumeration of conditional keys makes it harder to parse than a short bulleted structure would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema, un-annotated read tool, the description supplies the return shape that the missing output schema would otherwise have to carry, including conditional field presence and the meaning of coup_why_not values. It stops short of stating read-only/no-side-effect guarantees, which is the only notable remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline for a no-arg tool is 4. The description instead spends its budget documenting the return payload, which is the right use of space here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('My spies') and enumerates the fields the rows carry (agent_id, name, rank, state, station, can_stage_coup), so an agent knows it is a read-only roster of the player's own spies. It is slightly implicit about the verb (list/read) and never states it plainly, but the content makes the purpose unambiguous. It also names the action siblings, which helps distinguish it from move_spy/stage_coup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes action intent elsewhere: 'See available_spy_cities/move_spy/stage_coup for actions,' which tells the agent this tool is for inspection, not for issuing orders. It does not state when to consult it versus espionage_intrigue or relationship, so coverage is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stage_coupB
Attempt a coup against a city-state's current ally with a spy that has established surveillance
there (spies()'s can_stage_coup). Returns the chance the confirm printed, the outcome
notification and succeeded (the city-state's ally is now us); a refusal says why_not.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose the refusal path (`why_not`) and the outcome fields. It omits cost, cooldown, failure/detection consequences, or reversibility, so the safety/mutation profile is only partially characterized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the action and precondition, followed by the return/refusal contract. Efficient, though the parenthetical backtick mentions add slight clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter game action with no output schema, it explains the prerequisite and the shape of both success and refusal results. The only real gap is the unexplained agent_id parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter agent_id is never explained in the description. The description references 'a spy' conceptually but does not tie agent_id to that spy or clarify its role, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (stage a coup against a city-state's current ally) plus the gating precondition of a spy with established surveillance. It is clear enough to distinguish from siblings like espionage_intrigue or city_state_action, though it doesn't name an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a real precondition (a spy with established surveillance, via spies()'s can_stage_coup), which functions as implied when-to-use guidance. However it names no alternatives or when-not-to-use cases, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
steal_techA
Take a stolen tech (TECH_...) from player_id (steal_tech_options lists each victim and the
techs available from it). Clears ENDTURN_BLOCKING_STEAL_TECH.
| Name | Required | Description | Default |
|---|---|---|---|
| tech | Yes | ||
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses one side effect – clearing the ENDTURN_BLOCKING_STEAL_TECH blocker – which is genuine behavioral context. But it omits whether the tech is removed from the victim, diplomatic/reputation consequences, or failure conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action, with the parenthetical placed where it aids the reader. No filler, though the parenthetical slightly interrupts the core instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter action tool with no annotations and no output schema, the description covers both parameters' semantics and one key state effect. Only deeper behavioral detail (failure modes, consequences) is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema labels are bare ('Tech', 'Player Id'). The description compensates by identifying player_id as the victim and giving the expected tech identifier format (TECH_...), adding real meaning beyond the schema. It does not document valid ranges or the source of valid tech values beyond pointing at the options tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Take a stolen tech from player_id') and disambiguates from the sibling steal_tech_options by explaining that tool lists victims/techs. An agent can tell what this does without opening the schema, though the phrasing 'take a stolen tech' is slightly awkward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical points at steal_tech_options as the prerequisite step, implying a workflow (list options, then steal). However, it never states explicit when-to-use conditions, prerequisites (e.g., needing a spy in place), or when this action is unavailable, leaving usage largely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
steal_tech_optionsA
When a spy finished stealing: which civs I can take a tech from and the techs available from each.
Each victim carries player_id -- pass that to steal_tech. Also listed on turn_status.todo.steal_tech even if blocking_name is still
POLICY/PRODUCTION/etc. (the engine reports one blocker at a time).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a genuinely non-obvious behavior: the options are still listed on turn_status.todo.steal_tech even when blocking_name shows POLICY/PRODUCTION/etc., because the engine reports one blocker at a time. It does not state that the call is side-effect-free, but for a clearly query-shaped options endpoint the added engine-quirk context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause and every sentence carries information, but the second sentence is dense and parenthetical, mixing the player_id instruction with an unrelated engine caveat, which slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description adequately covers what comes back (civs plus techs per victim, with player_id) and where else the same data appears. Only the absence of any note on read-only/no-side-effect status keeps it from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description still adds meaning by explaining that each victim result carries a player_id intended to be forwarded to steal_tech, which is useful output-field semantics beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: it returns the civs a finished spy can steal a tech from and the techs available from each. It is distinguishable from the sibling steal_tech, which it explicitly names as the follow-up action rather than a duplicate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger ('when a spy finished stealing') and routes the agent to the next tool, steal_tech, via the player_id field. It also notes the options appear on turn_status.todo.steal_tech, which is a concrete when-to-use pointer, though it never states when this call is NOT valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swap_great_worksA
Swap tab's Swap button: exchange the work we have put up for one another civ offers
(their_work_id from culture_works().swap.theirs, same class). Refused unless we have a work of
that class put up.
| Name | Required | Description | Default |
|---|---|---|---|
| their_work_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that this is an exchange and states the refusal condition, but it omits other important traits such as irreversibility, what happens to the player's offered work, authentication/permission requirements, and what a successful result looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two efficient sentences with the action front-loaded. The phrase 'Swap tab's Swap button' is somewhat redundant UI language, but overall there is little waste and the key constraints are easy to find.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the key prerequisite and parameter provenance, but it does not describe the outcome or broader side effects of a successful swap. That leaves an agent with enough to attempt the call but not to fully predict its results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so by identifying the parameter's source (`culture_works().swap.theirs`) and adding a class constraint ('same class'), which meaningfully clarifies what value to supply beyond the bare integer type in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (exchange) and resource (great work), and it scopes the action to the civ-offered work identified by `their_work_id`. It is clear enough to distinguish from general great-work management, though it does not explicitly name the sibling tool it is not (e.g., set_swappable_great_work).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear prerequisite ('Refused unless we have a work of that class put up') and directs the agent to obtain `their_work_id` from `culture_works().swap.theirs`. This is strong contextual guidance, but it does not spell out when not to use the tool or name an explicit alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tactical_viewA
One unit's surroundings in one read, for choosing its move or attack. neighbors are the six adjacent plots
by coordinate and direction (NE, E, SE, SW, W, NW; the engine's own adjacency, so map wrap and the edge rows
need no hex arithmetic), each with terrain, river_crossing, owner, visible units and move: attack (a melee
attack; its preview is in targets), open (move_unit would send the order), refused (move_unit would refuse it,
why says why) or enemy (a visible enemy this unit cannot melee). open is not a path cost: turns-to-reach and
movement cost are not available. targets are the unit's melee and ranged targets with the combat previews
available_unit_actions gives. occupants (visible units, hostile first) and cities (a fogged one is
last_seen) cover radius (1-5; by default as far as this unit itself sees or shoots, at least 2); fog counts
visible, fogged and unrevealed plots there, and unseen_within_2 is how many plots within two cannot be seen:
fog can hide units, so nothing is called safe. unit.sight is this unit's own line of sight from the engine
(range, on_hills, plots, reach: high ground adds a plot, hills and forest in between block); a ranged unit's
unit.fire_los is the same test with its attack range, the one a ranged attack must pass (a Crossbowman on a
hill reaches 3); occupant and city rows say in_sight / in_fire_los. grid is a lettered picture of the same
area with its legend; players names every owner id in the reply. detail="full" adds plots (every revealed
plot in radius, as map_window reads it) and the previews' modifier rows.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | summary | |
| radius | No | ||
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it defines every `move` value, warns that `open` is not a path cost, explains fog counting, states nothing is called safe because fog hides units, and details the LOS/fire_los tests. This is unusually thorough behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and largely fluff-free, but it is delivered as one enormous paragraph mixing purpose, return semantics, and parameter docs. It is hard to scan, and some detail (grid/legend, players) could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, annotation-free, output-schema-less tool, the description covers all returned sections, their semantics, and parameter behavior. An agent has enough to interpret the reply and call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description explains `radius` (range 1-5, default as far as the unit sees or shoots, at least 2) and `detail="full"` (adds plots and modifier rows) in depth. Only `unit_id` is left to the schema, but it is self-evident given the tool's framing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb and resource: showing one unit's surroundings for choosing a move or attack. It scopes the tool tightly (one unit, one read) and enumerates the returned sections. It never names a sibling (e.g. map_window, available_unit_actions) to differentiate against, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'for choosing its move or attack', and the text leans on siblings by reference ('previews available_unit_actions gives', 'as map_window reads it'). But there is no explicit when-to-use or when-not versus map_window/units, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tech_treeA
The tech tree: have (already researched), techs (current / available / unavailable with
prereqs and missing steps, turns-if-researchable, and unlocks — the buttons on that tech for
this seat). No rival column: an embassy shows a capital, not a tech list (the steal-tech chooser
is the only stock screen that names a rival's techs). available_research is the leaf list only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it discloses scope exclusions ('No rival column'), seat-dependence ('the buttons on that tech for this seat'), and what each section represents (prereqs, missing steps, turns-if-researchable, unlocks). It does not explicitly state read-only/non-mutating status, but the content disclosure is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences front-loaded with the resource name, and most clauses carry information. But the heavy nested backticks, em-dashes and parentheticals ('the buttons on that tech for this seat') make it dense and slightly convoluted, and the rival-column sentence is a tangent that costs readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must describe the payload itself, and it does so reasonably well: it names the sections, the kinds of statuses, and the unlock hints. It stops short of fully specifying the payload structure (e.g., the meaning of 'current' vs 'available' at a finer grain), but nothing essential for calling it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case. The description instead spends its budget documenting the return payload's shape, which is the relevant semantic information for a no-arg call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name and opening clause ('The tech tree:') identify the resource unambiguously, and the field breakdown (`have`, `techs`, `unlocks`) tells an agent what the payload covers. It also distinguishes itself from `available_research` (leaf list only) and `steal_tech_options` (rival techs), so the agent can tell which stock screen it is. No explicit verb ('view/get'), but the read-only zero-arg shape makes that obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies routing via two negative statements — no rival column, and 'available_research is the leaf list only' — which tell the agent where NOT to look for certain data. However, there is no explicit 'use this when you need X' and no stated prerequisites for the tool itself; usage is inferred rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
todo_actionsA
Legal actions for many units in one call. With no unit_ids: every unit in turn_status.todo.units
(still needs an order) plus every unit with a promotion waiting; with unit_ids: exactly those.
Each row is what available_unit_actions returns for that unit (actions, promotions, nearby_builds,
attack_targets, ranged_targets, moves, x, y) plus id, type and promotion_ready. Action rows
drop the computed help line (upgrade price, scrap gold) unless full=true; the standing text
for every action and promotion is in reference("actions") / reference("promotions"). One query instead of one per unit: the
read for a whole turn's units in one call. Refused while it is not our turn unless unit_ids is given.
detail: "normal" (default, the rows above), "full" (same as full=true) or "summary": per unit only id,
type, x, y, moves, promotion_ready, actions as bare type strings minus the everyday ones (move, route,
swap, skip, sleep, fortify, alert, wake, cancel, delete, automate/stop, remove route -- listed once in
routine_actions, counted per unit in routine), promotions (enums for choose_promotion), attack /
ranged targets (x, y, unit or city, owner, hp; no preview) and build_plots (x, y, builds, resource).
drill_down gives the exact todo_actions arguments for the normal rows. Same single read at every level;
a summary of 38 units is a fraction of the normal size. limit returns the first N units in todo order
and lists the rest in omitted (count, ids, the args that fetch them). Every reply has detail, n
(total units) and returned.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| limit | No | ||
| detail | No | ||
| unit_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: turn-gating/refusal behavior, what changes at each detail level, that action rows drop the computed help line unless full=true, and that limit truncates with an `omitted` payload. This is above-and-beyond disclosure of side effects, output shape, and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the content is dense rather than padded, but the prose is one long run-on of nested parentheticals that is hard to parse. For a 4-param tool the length is justified by the detail-level complexity, yet structure and scannability suffer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a batch tool with three detail modes, no output schema, and 0% schema coverage, the description covers routing, gating, per-mode field lists, and truncation metadata. There is no output schema, yet the returned keys (detail, n, returned, omitted) are explained. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must fully compensate, and it does: full (retains help lines), detail (normal/full/summary, with the semantics of each), unit_ids (exact selection vs all todo+promotion-ready units), and limit (first N in todo order plus `omitted` metadata). Each of the four parameters is given meaning beyond the bare schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Legal actions for many units in one call.' It explicitly distinguishes itself from the sibling available_unit_actions by describing itself as the batched equivalent ('Each row is what available_unit_actions returns for that unit'). An agent can immediately tell this is the one-shot, whole-turn aggregate rather than the per-unit call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete context for selection: the no-unit_ids vs unit_ids branch, the turn gating ('Refused while it is not our turn unless unit_ids is given'), and the efficiency rationale ('One query instead of one per unit'). It points to drill_down and reference for follow-ups. It stops short of an explicit when-not-to-use-this-and-use-X-instead statement, so not quite a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_catalogA
What can currently go on a trade table with this major civ (gold, GPT, embassy, open borders, pacts,
resources, cities as name + pop, with x/y only once the plot is revealed, third_party.war/peace.us/them
(the Other Players pocket: every third civ both sides know, ok or greyed with the screen's reason), World Congress vote_commitments:
one row per pending proposal + choice either side may pledge, with votes_us/votes_them), peace (at war: the Negotiate
Peace gate -- ok, locked_turns, the screen's note; the treaty itself is seeded on both sides of any table by the screens). Each resource carries class, us_available/them_available (spare copies each side holds)
and last_copy: true when exporting it would give away our only copy of a luxury (costs happiness).
Read-only: does not construct or send a deal. City-states: use city_state_gifts.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly. It discloses read-only status, that it does not construct or send deals, the exact contents returned (including special fields like last_copy, third_party.war/peace, vote_commitments, and peace gate details), and the happiness cost implication of exporting a last luxury copy. This is rich, specific behavioral context beyond what any structured field provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, but the bulk is a single dense, parenthetical-laden sentence that is difficult to parse. Much of the detail is useful given the absence of an output schema, so it is not pure waste, but the structure and length reduce readability and conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, read-only catalog tool with no output schema and no annotations, the description is quite complete: it explains the tool's scope, return fields, special conditions, and sibling routing. The notable gap is the unexplained player_id parameter, which an agent must have in order to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the sole required parameter player_id is not mentioned or explained in the description. The phrase 'with this major civ' hints that player_id identifies the target civilization, but it does not state the parameter's name, expected format, or accepted values, leaving the agent to infer how to supply it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the resource and scope precisely: it catalogs everything that can go on a trade table with a major civ, enumerating gold, GPT, embassy, open borders, pacts, resources, cities, third-party war/peace, World Congress vote commitments, and peace gates. It distinguishes itself from city-state gifting via the explicit pointer to city_state_gifts. However, it lacks a direct action verb such as 'lists' or 'returns', relying on a noun phrase to convey the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the tool is read-only and does not construct or send a deal, which implies when to use it versus deal-making tools. It also names the alternative for city-states (city_state_gifts). It stops short of explicitly naming propose_deal, negotiate_deal, or other major-civ deal construction tools as alternatives, but the read-only exclusion gives sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_routesB
Trade Route Overview: outgoing is Your TR (my caravans/cargo ships), incoming is With You
(other civs' routes into my cities). Each row: from/to city and player, turns_left, per-turn yields
for the origin (gold/science) and destination (gold_them / food_them / production_them).
The religion columns are from_religion/from_pressure (left arrow) and to_religion/to_pressure
(right arrow), omitted when that cell is blank. details is the gold and science hover.
overview().free_trade_route_slots (available - used - queued) says whether a new caravan can be trained.
path is the route line the map draws, plot by plot from the origin (vis=false where fogged), as
the plot hover names it on any revealed plot. unit is the caravan/cargo ship on that line (ours
always; a foreign one only while in sight) with escorted / escorted_by: our combat units on its
plot, which an enemy must defeat before it can plunder; unit.matched is recorded (this caravan was
seen alone on this route before), line or line_ambiguous (routes share the plot and no earlier read
told them apart: it may be the other row's caravan). enemies_near_path lists visible enemy
combat units within one hex of the line with their distance to the caravan.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so well for a read tool: it defines outgoing vs incoming, per-row fields, that religion columns are omitted when blank, that path points are vis=false where fogged, the meaning of unit.matched states, and that foreign units appear only while in sight. It stops short of stating this is a side-effect-free read, but for a zero-parameter query tool the disclosed semantics are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense block with no paragraph breaks or front-loaded summary beyond the title, reading more like a field glossary than a tool description. Every clause is informative about the data, so little is wasted, but the lack of structure makes it harder to scan quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 return values, and it does so thoroughly across rows, religion columns, path, unit, and enemies_near_path. It is complete about the data shape; only the usage/routing context is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline of 4 applies. The description appropriately spends its space on output semantics instead of inventing parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is headed 'Trade Route Overview' and details the shape of returned data, so the resource (trade routes) is identifiable, but it never states a verb or a crisp purpose like 'list all trade routes'. It also does not distinguish itself from close siblings such as available_trade_routes, establish_trade_route, or plunder_trade_route, leaving the agent to infer which one to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative is named. With siblings like available_trade_routes and plunder_trade_route in the toolset, the absence of any routing hint is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
turn_digestA
Everything recorded since my last call: combats, cities founded/lost, wars, chat, notifications, alerts.
Notes: a caravan / cargo ship shows up as unit_destroyed the turn its trade route starts -- the route
IS the unit now (it comes back as a new unit when the route ends); unit_graphics_reset means the engine
only rebuilt a model (era change, upgrade), the unit is fine. unit_captured is a civilian taken, not killed:
the row carries the unit, its tile, the captor when in sight and (barbarians) the nearest revealed camp. Leader lines you provoked yourself via
negotiate_deal/propose_deal are not included; unsolicited AI approaches are.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it explains that unit_destroyed on a trade-route turn is normal (route becomes a unit), that unit_graphics_reset only means a model was rebuilt, and that unit_captured is a civilian taken rather than killed, including the payload fields that row carries. It does not cover authentication, rate limits, or the temporal window beyond "since my last call."
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, followed by edge-case notes that each earn their place by disambiguating confusing event types an agent would otherwise misread. Slightly dense and run-on toward the end, but nothing is redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must characterize the return, and it largely does — it names the event categories delivered and gives payload detail for at least one event (unit_captured). Gaps remain on overall structure and how far back the digest reaches, but for a zero-param digest tool this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no semantics to explain; the baseline for a no-parameter tool is 4. The description correctly implies no input is required by framing it as an automatic since-last-call digest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-like function and scope ("Everything recorded since my last call") and enumerates the content categories (combats, cities, wars, chat, notifications, alerts). It distinguishes itself by naming related siblings (negotiate_deal/propose_deal) in the exclusion note, though it never contrasts itself with nearby tools like notification_log, briefing, or turn_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — call it to catch up on events since the previous call — but there is no explicit when-to-use/when-not, nor a pointer to turn_status or notification_log as alternatives for overlapping needs. One partial boundary rule is given (self-provoked leader lines from negotiate_deal/propose_deal are excluded), which helps but doesn't constitute full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
turn_statusA
Whose turn it is, current turn number, whether it is my turn, what blocks ending it, and whether a
greeting / discussion / tech / great-person screen is up (those are not in pending_popups).
gate is the one thing to read first: null means act freely; otherwise it names what must happen before
any action works and clear_with the tool that does it (every refusal carries the same object). seat is
the player this server plays. todo lists the decisions the turn still needs: units (need orders), cities
(empty production), promotions, steal_tech (a pending spy chooser, even when blocking_name says something
else: the engine reports one blocker at a time), and todo.ongoing -- units the game is already moving
(automated or on a multi-turn move; attention names a camp, hostile or lost destination beside one),
which never block the turn. blocking_name / blocking_hint say what stops end_turn and which tool clears
it. alerts are facts about my own empire that block nothing: low happiness or an unhappy tier, a strategic
resource in deficit; happiness rides on every status. expiring_deals (within 3 turns) and
expiring_friendships (within 5) list what is about to lapse. While a leader screen is up
(leader_greeting_pending / discussion_pending) the engine freezes blocking_name and todo: discussion()
reads it, dismiss_discussion() closes a plain greeting. From the main menu it reports {"ingame": false,
"screen": ...}: load_latest / load_save get back into a game. Every key in detail: how_to_play("turn_status").
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It explains that refusals carry the same gate object, that leader screens freeze blocking_name and todo, that `todo.ongoing` never blocks the turn, and that main-menu state reports ingame=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense, but it is front-loaded with the core purpose and then systematically explains the important status keys. For a tool with no output schema and many return fields, most sentences earn their place, though the paragraph could be more structured with bullets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must explain the return shape and behavior. It covers gate, seat, todo, blocking_name, alerts, happiness, expiring deals, leader-screen behavior, and main-menu state, making it complete for an agent to interpret the status correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to clarify. Per the rubric, a zero-parameter tool receives a baseline of 4 when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool reports: whose turn it is, turn number, whether it is my turn, what blocks ending it, and screen states. It also distinguishes itself from siblings by noting that greeting/discussion/tech/great-person screens are not in pending_popups and by naming end_turn, discussion, and dismiss_discussion as related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says `gate` is the one thing to read first, that null means act freely, and that a non-null gate names what must happen before any action works. It also routes the agent to discussion() and dismiss_discussion() while a leader screen is up, and to load_latest/load_save from the main menu.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unit_home_optionsA
Where a trade unit or a Great Admiral could re-home (the Change Home City / Change Port
chooser). Both need the unit to be standing in one of my cities; outside one there is no button,
and the answer says so. cities is the engine's own candidate list -- apply one with
unit_mission(unit_id, mission, x, y) using the mission in the reply. Re-homing a caravan nearer a
richer partner is how a 6-gold route becomes a 12-gold one; see available_trade_routes after.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the city-standing precondition, the failure behavior ('there is no button, and the answer says so'), and that the reply contains an engine-computed `cities` candidate list plus a `mission` value to feed back into unit_mission. It does not discuss any cost, cooldown, or whether re-homing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key mechanic (candidate re-home cities) is front-loaded, followed by the precondition and the apply-with-unit_mission instruction. The caravan/6-gold-to-12-gold aside is motivational detail that earns some of its space by explaining why an agent would call this, but it is the most expendable sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter query tool with no output schema and no annotations, the description covers the precondition, the failure case, the shape of the reply (`cities`, `mission`), and how to act on it. Only a fuller account of the returned list's contents or the absence of side effects would push it higher.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but there is only one trivial integer parameter (unit_id). The description supplies its meaning implicitly — 'the unit to be standing in one of my cities' — which is sufficient for a single obvious identifier, though it never names unit_id directly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource — where a trade unit or Great Admiral 'could re-home' — and identifies the exact in-game UI it mirrors (the Change Home City / Change Port chooser). An agent can distinguish it from sibling query tools like available_unit_actions or available_trade_routes without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the precondition clearly (the unit must be standing in one of my cities) and what happens outside that condition (no button, the answer says so). It also routes the follow-up action to unit_mission with the returned mission. It stops short of naming an explicit alternative tool for the same decision, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unit_missionA
Give a unit a mission: MISSION_FOUND (settle here), MISSION_FORTIFY, MISSION_SLEEP, MISSION_SKIP, MISSION_HEAL,
MISSION_ALERT, MISSION_RANGE_ATTACK (x,y), MISSION_PILLAGE (result includes gold_gained), MISSION_EMBARK/DISEMBARK...
An air strike is MISSION_MOVE_TO onto the target plot (that is how the game issues it); like a
melee move onto an enemy, the result then carries attack with both sides' hp before/after and who died.
An intercepted strike says so: attack.intercepted, interceptor, shot_down (from the game's own banner).
MISSION_BUILD: pass the improvement in build, e.g. build="BUILD_FARM" (do NOT put it in x/y --
those are for movement-shaped missions). Builds on the unit's own tile.
MISSION_SPREAD_RELIGION / MISSION_REMOVE_HERESY: the unit must be inside or adjacent to the target city;
the result's effects reports that city's followers/majority before and after, spreads_left, and (for a
city-state) influence before/after, so no follow-up read is needed to know whether the spread worked.
MISSION_CREATE_GREAT_WORK: the reply's great_work names the work and the city/building slot it filled.
AUTOMATE_EXPLORE / AUTOMATE_BUILD (the unit panel's automation buttons, when available_unit_actions lists
them) hand the unit to the game's own automation; it then never blocks end_turn. The reply has automated=true,
and the unit is listed under turn_status.todo.ongoing until a new move_unit / unit_mission takes it back.
Selects the unit like the unit panel does (orders go through the game's network path).
A unit on a conditional order (give_order) is taken back: the order pauses (order_paused).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| build | No | ||
| mission | Yes | ||
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that air strikes return an `attack` payload with both sides' hp and interceptor/shot_down fields, that effects report followers/influence before-and-after, that great_work names the work, that automation sets automated=true and lists the unit under turn_status.todo.ongoing, and that a conditional order is paused on reassignment. It stops short of stating permissions, failure modes, or validation errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is information-dense and mostly earns its place, but it is delivered as a single sprawling block of run-on sentences with no headings or bullet structure, making it harder to scan than it needs to be for the amount of material covered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema coverage, the description is impressively complete, covering mission semantics, return payloads, and side effects. Remaining gaps are minor (error conditions, parameter defaults).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it explains that x/y are for movement-shaped missions, that MISSION_BUILD uses `build` rather than x/y, and it enumerates valid mission values. The unit_id and the default -1 sentinel values are left implicit, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (give a mission) and resource (a unit), then enumerates the mission values so the agent knows the exact scope. It also distinguishes itself from move_unit and give_order by describing how missions interact with those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete when-to-use guidance for several missions (e.g. SPREAD_RELIGION requires the unit inside or adjacent to the target city; MISSION_BUILD takes the improvement in `build`, not x/y; automation buttons are usable when available_unit_actions lists them). It references siblings like available_unit_actions and give_order but never states a general 'use this instead of X' rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unit_mission_targetsA
Legal visible targets for an air strike/sweep, nuke, paradrop, rebase or airlift mission
listed in available_unit_actions. Paginated: offset / limit (at most 100 per page; total says how
many exist); use unit_mission to issue the order.
Air strikes include target details and a combat preview with retaliation, strength and visible
interceptors. Expected damage taken excludes interception; unseen interceptors may still exist.
Fogged destinations are excluded because legality could expose hidden occupants.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| mission | Yes | ||
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden and delivers: pagination behavior, that air strikes include target details and a combat preview, and a crucial caveat that 'Expected damage taken excludes interception; unseen interceptors may still exist'. It also explains why fogged destinations are omitted ('legality could expose hidden occupants'), which is exactly the kind of non-obvious behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the purpose, then pagination, then the combat-preview caveats, with no filler sentences. It is somewhat dense but every clause adds usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema or annotations, so the description must stand alone, and it does describe what targets return (target details, combat preview, retaliation/strength/interceptors) plus paging and visibility limits. The main gap is that valid `mission` values and unit_id semantics remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it only partially does. It explains offset/limit ('at most 100 per page; total says how many exist') well, and the mission-type list hints at valid `mission` values, but the exact accepted strings and the `unit_id` parameter are not documented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific verb and resource ('Legal visible targets for an air strike/sweep, nuke, paradrop, rebase or airlift mission') and anchors this as a lookup step distinct from the action step. It also names the sibling unit_mission as the tool that actually issues the order, so an agent can separate querying targets from executing them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says the relevant missions are 'listed in available_unit_actions' and that you 'use unit_mission to issue the order', giving both the upstream discovery tool and the downstream action tool. It lacks an explicit 'do not use this when...' exclusion, but the routing context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unitsB
My units with position, moves left, hp, strength, current promotions, XP toward the next
promotion (xp / xp_needed), and whether they still need orders. garrisoned is the Military
Overview status. upgrade_to / upgrade_gold / can_upgrade are the unit-panel upgrade preview
when a path exists; upgrade_blocked (when can_upgrade is false) is the panel's red lines: reason
territory / city / gold / resources (each short one) / stacking, unavailable (the target cannot be
trained yet: prereq_tech) or moved. A religious unit carries religion (the faith it spreads, which is the one of
the city it was bought in -- not necessarily yours) and spreads_left, as the unit panel names it. A Worker mid-job carries build (BUILD_*) and build_turns_left as the unit
panel's "Trading Post (6)" line; mission_name names a standing MISSION_* (e.g. ROUTE_TO). territory
{player_id, owner, city_state} is whose land the unit stands on when it is not mine (a unit in a
city-state's land costs influence each turn); absent on my own or unowned land.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful semantics: 'territory' is absent on my own/unowned land and a unit in city-state land 'costs influence each turn', garrisoned maps to the Military Overview status, and religion 'not necessarily yours'. However it never characterizes the tool's own behavior as a safe read with no side effects, and only informally describes derived fields like can_upgrade/upgrade_blocked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
For a tool with no output schema the field-by-field detail is justified, but it is delivered as an unstructured run-on of parentheticals with no headings or grouping. It also begins mid-thought ('My units with...') with no leading sentence stating what the call returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must document the return payload, and it does so densely and largely coherently for every listed field (xp/xp_needed, upgrade preview, religion/spreads_left, build/build_turns_left, mission_name, territory). What is missing is the framing sentence that says what the tool actually returns as a whole and whether the result can be empty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The text instead spends its budget on output-field semantics, which is reasonable here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states a verb, but the opening 'My units with position, moves left, hp, strength...' makes the resource and the returned-record shape clear enough for an agent to infer a read of owned units. It offers no differentiation from unit-related siblings such as 'orders', 'available_unit_actions', or 'unit_mission_targets', leaving selection partly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no prerequisites, and no mention of alternatives, despite many sibling tools operating on units. An agent gets field semantics but no routing guidance at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_policy_branchA
Unlock a policy branch/tree, e.g. POLICY_BRANCH_TRADITION, spending a culture policy slot.
| Name | Required | Description | Default |
|---|---|---|---|
| branch | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It usefully discloses the resource cost (consumes a culture policy slot), but says nothing about whether the unlock is permanent, what permissions are needed, or side effects. The cost disclosure is the one genuine 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that leads with the action and follows with an example and the cost. No filler, everything front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no annotations and no output schema, the description covers the core action and its cost, but omits the source of valid branch identifiers, permanence of the unlock, and any post-unlock effect. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema only types 'branch' as a bare string with no description. The description compensates by giving the example 'POLICY_BRANCH_TRADITION', which hints at the expected constant format, but it doesn't enumerate valid values or explain where to find them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('unlock') and resource ('policy branch/tree'), with a concrete example value. It clearly differs from read-only siblings like available_policies, though it doesn't explicitly contrast with choose_policy/choose_ideology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of 'spending a culture policy slot' implies the precondition for use, but there is no explicit when-to-use statement, no prerequisites (e.g. needing the branch available), and no named alternative. Usage is implied rather than directed.
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 for gold along its upgrade path (e.g. Warrior -> Swordsman). Needs full moves,
own/allied territory, the gold and any strategic resource. The engine replaces the unit: use the
returned unit_id (new) from now on, not the one passed in. available_unit_actions lists
COMMAND_UPGRADE when possible.
| Name | Required | Description | Default |
|---|---|---|---|
| unit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the critical non-obvious behavior: the engine replaces the unit and the returned unit_id must be used going forward, not the one passed in. That is exactly the kind of gotcha an agent needs. It does not cover failure modes (e.g. what happens if prerequisites are unmet), so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with no filler; the core action and cost lead, followed by prerequisites, the id-replacement warning, and the discovery pointer. Slightly dense but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining the returned unit_id, which is the key return-value detail. Prerequisites and the availability check via available_unit_actions are covered. Remaining gaps are edge-case failure behavior and how to discover valid unit_ids.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage, so the description must compensate. It clarifies that unit_id refers to the unit being upgraded and that this id is invalidated after the call, which is meaningful beyond the schema. However, it never states whether unit_id is the player's unit identifier format or how to obtain it, so the coverage gap is only partially closed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (upgrade) and resource (a unit) plus the mechanism and cost ('for gold along its upgrade path'), with a concrete example (Warrior -> Swordsman). It is clearly distinguishable from siblings like move_unit, disband_unit, or unit_mission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists the conditions required to use it (full moves, own/allied territory, the gold and any strategic resource) and routes the agent to available_unit_actions to check for COMMAND_UPGRADE availability. It lacks an explicit 'when not to use / use X instead' pointer to alternatives such as disband_unit, but the preconditions are unusually concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_my_turnA
Block until it is my turn (hotseat: dismisses the hand-off screen; LAN/solo: waits for the AIs to finish), then return turn_status. On timeout it returns the current status with my_turn=false -- call it again. A progress notification goes out every few seconds while waiting, so with a client that honours progress timeout_seconds can be as long as an AI round needs (600-1800); otherwise keep it under the client's tool-call limit. Also sweeps informational popups. finish_turn does end_turn + this + turn_digest in one call.
Returns early with discussion_pending=true when an AI leader wants an answer mid-turn: discussion()
shows what they said and the buttons, respond_discussion(button_id) answers; for a trade offer on the
table incoming_deal() reads the terms and accept_deal()/refuse_deal() resolve it; dismiss_discussion()
leaves without agreeing. Then call this again.
Returns early with tech_popup_pending=true when a technology must be chosen (research still unset).
Every answer carries gate (as turn_status): null when you may act, else what still stands in the way
and the tool that clears it. A timeout answer carries seat (the player this server waits for) and
active_player; in hotseat a different active_player is the other player's turn -- call again.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does: it discloses blocking behavior, timeout semantics, periodic progress notifications, popup sweeping, hotseat vs LAN/solo differences, and the meaning of the `gate`, `seat`, and `active_player` return fields. This is unusually rich behavioral disclosure for a state-machine-like tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core blocking behavior and its timeout fallback are front-loaded in the first two sentences, and the dense remainder each conveys distinct branch handling. It is long but nearly every sentence earns its place, though the density could be trimmed slightly for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex blocking tool with no output schema and no annotations, the description covers returns (turn_status, gate, seat, active_player), all early-return branches, timeout behavior, and follow-up tools. An agent has everything needed to call it and react to its output correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the single timeout_seconds parameter, which it largely does with actionable value guidance (600-1800 when the client honours progress, else under the tool-call limit). It does not reconcile this with the schema default of 90, leaving a small ambiguity, but adds clear meaning beyond the bare type/default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Block until it is my turn') and immediately distinguishes itself from siblings like turn_status and finish_turn by describing the blocking wait and its early-return states. An agent can tell exactly what this tool does without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance (blocking on turn transitions, sweeping popups), what to do on each early return (discussion_pending -> discussion()/respond_discussion(); tech_popup_pending -> choose research), and names alternatives (finish_turn = end_turn + this + turn_digest). The 'call it again' loops are laid out for each branch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
war_consequencesA
Read before declare_war (or city_state_action declare_war): what the game's confirmation screen warns about -- a Declaration of Friendship being broken, denouncements, city-states allied to the target that join the war, majors protecting a targeted city-state, and trade routes that would be cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| player_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so well by listing what it reports: broken Declarations of Friendship, denouncements, allied city-states joining the war, major powers protecting a city-state, and cancelled trade routes. It implies a read-only informational tool but does not explicitly state that it has no side effects or permissions requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the key instruction ('Read before declare_war') and then provides a focused list of consequences. Every element earns its place, and there is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the informational return content well enough that an output schema is not required. However, it omits any explanation of the required player_id input, and without annotations it does not explicitly confirm the tool is read-only, leaving a meaningful gap for an agent deciding how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, player_id, has 0% schema description coverage and is not mentioned in the description. The description references a 'target' of a war but never explains whose perspective player_id represents or how it affects the output, so it does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it reads and reports the consequences the game's confirmation screen shows before declaring war. It explicitly names the sibling tools it supports (declare_war, city_state_action declare_war) and enumerates the exact warning categories, so an agent can distinguish it from declare_war itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit timing and context: 'Read before declare_war (or city_state_action declare_war)'. It names the relevant alternative actions and makes clear this is a preparatory read step rather than the war declaration itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wonder_overviewB
World wonders held by met civilizations (Global Relations). Locations and captured/builder details only for cities in sight.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses a visibility limitation—locations and captured/builder details only for cities in sight—but does not state whether the tool is read-only, what permissions are needed, or what the return format is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words. The core scope and the key visibility constraint are front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter overview tool with no output schema and no annotations, the description is minimally adequate. It explains what data is included but omits usage context and return-format details, leaving some gaps for an agent trying to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. The baseline score of 4 applies because the description does not need to compensate for any parameter gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as world wonders held by met civilizations and scopes it to Global Relations. It is specific enough for an agent to know what data is shown, though it does not explicitly distinguish itself from siblings like overview or known_world.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description states what it shows but provides no context, prerequisites, or routing information for selecting it over other overview or diplomatic tools.
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.
144 tool updates
v1.11.0- First observed
accept_deal - First observed
accept_friendship - First observed
add_reformation_belief - First observed
amend_assignment - First observed
answer_popup - First observed
archaeology_options - First observed
assign - First observed
assignments - First observed
available_beliefs - First observed
available_city_strikes - First observed
available_policies - First observed
available_production - First observed
available_research - First observed
available_spy_cities - First observed
available_trade_routes - First observed
available_unit_actions - First observed
briefing - First observed
buy_city_plot - First observed
cancel_order - First observed
change_ideology - First observed
change_specialist - First observed
change_working_plot - First observed
choose_archaeology - First observed
choose_city_capture - First observed
choose_faith_great_person - First observed
choose_free_great_person - First observed
choose_goody_hut - First observed
choose_ideology - First observed
choose_maya_bonus - First observed
choose_policy - First observed
choose_promotion - First observed
cities - First observed
city_capture_options - First observed
city_ranged_attack - First observed
city_screen - First observed
city_state_action - First observed
city_state_actions - First observed
city_state_bonuses - First observed
city_state_gifts - First observed
city_task - First observed
close_assignment - First observed
compare - First observed
culture_overview - First observed
culture_works - First observed
current_deals - First observed
declare_war - First observed
demand - First observed
demographics - First observed
denounce - First observed
diplo_event - First observed
diplomacy - First observed
disband_unit - First observed
discussion - First observed
dismiss_discussion - First observed
do - First observed
domination_progress - First observed
end_turn - First observed
enhance_religion - First observed
espionage_intrigue - First observed
establish_trade_route - First observed
exit_to_main_menu - First observed
explore_frontier - First observed
faith_great_person_options - First observed
finish_turn - First observed
forget - First observed
found_pantheon - First observed
found_religion - First observed
free_great_person_options - First observed
generic_popup - First observed
gift_tile_improvement - First observed
gift_tile_improvement_options - First observed
gift_unit - First observed
gift_unit_options - First observed
give_order - First observed
goody_hut_options - First observed
great_person_progress - First observed
how_to_play - First observed
incoming_deal - First observed
known_world - First observed
league_cast_votes - First observed
league_propose_enact - First observed
league_propose_repeal - First observed
league_status - First observed
load_latest - First observed
load_save - First observed
make_peace - First observed
map_index - First observed
map_window - First observed
maya_options - First observed
minor_gold_gift - First observed
move_spy - First observed
move_unit - First observed
negotiate_deal - First observed
notification_log - First observed
orders - First observed
overview - First observed
players - First observed
plunder_trade_route - First observed
propose_deal - First observed
propose_friendship - First observed
purchase_cost - First observed
purchase_production - First observed
quick_save - First observed
recall - First observed
reference - First observed
refuse_deal - First observed
relationship - First observed
religion_overview - First observed
remember - First observed
remove_from_queue - First observed
respond_discussion - First observed
resume_order - First observed
revealed_map - First observed
sell_building - First observed
set_auto_specialists - First observed
set_avoid_growth - First observed
set_city_focus - First observed
set_faith_purchase - First observed
set_production - First observed
set_research - First observed
set_seat - First observed
set_swappable_great_work - First observed
spaceship_status - First observed
spies - First observed
stage_coup - First observed
steal_tech - First observed
steal_tech_options - First observed
swap_great_works - First observed
tactical_view - First observed
tech_tree - First observed
todo_actions - First observed
trade_catalog - First observed
trade_routes - First observed
turn_digest - First observed
turn_status - First observed
unit_home_options - First observed
unit_mission - First observed
unit_mission_targets - First observed
units - First observed
unlock_policy_branch - First observed
upgrade_unit - First observed
wait_for_my_turn - First observed
war_consequences - First observed
wonder_overview
TDQS
Scored across 144 tools
Many tools have distinct, well-documented purposes, but the set contains numerous overlapping read tools for map state (known_world, map_window, revealed_map, map_index, tactical_view, explore_frontier) and status (turn_status, briefing, overview, turn_digest). An agent must carefully read descriptions to choose the right one, and some choices (e.g., available_unit_actions vs todo_actions vs units vs unit_mission_targets) could be confused.
Names are uniformly snake_case with predictable prefixes: read-only tools are nouns (units, cities, overview), actions are verbs (move_unit, set_production, choose_policy), option lists use available_* or *_options, and choosers use choose_*. A few generic names like do and noun-only reads deviate slightly from a strict verb_noun pattern, but the overall convention is clear and consistent.
144 tools is far beyond the 3–15 range considered well-scoped, and the rubric explicitly flags 50+ as an extreme mismatch. Even for a complex game like Civilization V, this volume imposes a heavy selection burden on the agent and suggests many niche or overlapping tools could be consolidated.
The surface covers nearly every game subsystem: units, combat, cities, production, research, policies, religion, espionage, diplomacy, trade, map reading, save/load, notebook, and conditional orders. There are no obvious gaps in CRUD or lifecycle coverage for the domain, and dead ends are explicitly handled with blocker-clearing tools.
Maintenance
Related MCP Connectors
Pit your LLM against rogue AI and rival models, or try to beat it yourself in hot seat. 3D tactics.
- bluffnetOAuthgg.bluffnet
Live Texas Hold'em for AI agents. The tools teach the rules; the bluffing is up to your model.
Calibrated world model for AI agents. 40 tools: world state, markets, trading. Kalshi + Polymarket.
Games for AI agents. Each game runs inside a single context window.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude to access real-time Civilization VI game data for strategic analysis, diplomatic intelligence, military assessments, and more via MCP.215MIT
- AlicenseAqualityFmaintenanceAn MCP server that lets LLM agents play full games of Civilization VI. It connects to a running game and provides tools for unit movement, city management, diplomacy, and more, all through the game's rule-enforcing APIs.76210MIT
- AlicenseAqualityBmaintenanceAn MCP server that lets LLM agents play full games of Civilization VI.85MIT
- AlicenseNot gradedqualityBmaintenanceEnables any LLM to play Freeciv as a player through MCP tools and resources, with a graphical observer view.MIT