Skip to main content
Glama
ty-meador

civ-v-llm-harness

by ty-meador

available_production

Lists what a city can produce or purchase now—units, buildings, projects, processes—with turn counts, rush-buy costs, and buy/blocked status to guide production choices.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
city_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.11.0

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does 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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

Deploy Server

Other Tools