Skip to main content
Glama

Livestock and pastures

livestock_and_pastures

Monitor your fort's tame livestock and pasture status. Identify grazers without pasture, egg layers missing nestboxes, and get detailed counts by species, age, training, and slaughter marking.

Instructions

The fort's tame animal economy as facts — every prior tool sees hostiles (threats) or nothing at all here. tame_total/pets/livestock split ownership; by_group[]/by_group_total/by_group_truncated count tame animals by species/sex/adult-or-not, capped at 100 distinct combinations. grazers reports total vs pastured, plus the individual animals NOT in any pasture zone — a grazer with no pasture cannot graze and silently starves; this is normally invisible (juveniles graze too, so grazer status is NOT gated on adulthood). egg_layers reports counts only (total, fort-wide nestbox count, how many are pastured without a nestbox in reach, how many are unpastured) since the consequence (missed eggs) is mild and the population is usually large — gated on adulthood (a juvenile of an egg-laying caste cannot actually lay yet, matching DFHack's own autonestbox behavior). marked_for_slaughter and trained (training_level Trained..MasterfullyTrained — DF's single shared training-quality scale, NOT which discipline the animal was trained for; it does not persist war-vs-hunting per animal) list individual animals, capped. cages[]/cages_truncated lists occupied cages with their occupants (dfhack.buildings.getCageOccupants); each cage's own occupants[] is independently capped too (occupants_total/occupants_truncated), so a single densely-packed cage trap can't inflate the response either. unassigned_count is animals with no pasture, cage, or chain — DFHack's zone tool calls this "unassigned" (roaming loose); reported as a count only since it is commonly large and often intentional (e.g. free-roaming cats). Every unit fact here is gated through the fog-of-war visibility check — an undiscovered cavern's wildlife never leaks in. The tame-animal enumeration (tame_total/pets/livestock/by_group/grazers/egg_layers/marked_for_slaughter/trained/unassigned_count) is ADDITIONALLY restricted to this fort's own civ, so a caravan's or diplomat's pack animal is excluded; cages[].occupants[] intentionally skips that restriction — a cage's contents (which may include a captured wild or hostile creature) are a structural fact independent of ownership, still fog-of-war gated. The tame-animal enumeration also requires isActive/not isDead (a dead animal's unit record never counts). Returns {"error":"no fort loaded"} if no fort is active.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

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

With no annotations, the description thoroughly discloses behaviors: result caps (100 distinct combinations), fog-of-war gating, civ restriction, isActive/isDead requirements, and the error response when no fort is loaded. It even explains nuances like grazer status not being gated on adulthood and egg_layers counts being gated on adulthood. This fully compensates for the absence of annotations.

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

Conciseness4/5

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

The description is lengthy but dense with essential information for a tool with no output schema. It is front-loaded with the purpose and organized by field categories. While it could be broken into clearer sections, every sentence earns its place given the complexity and the need to document edge cases.

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

Completeness5/5

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

The description is exceptionally complete for a tool with no output schema. It explains all major fields (tame_total, by_group, grazers, egg_layers, marked_for_slaughter, trained, cages, unassigned_count), their semantics, caps, and edge cases. It even covers error conditions, making it sufficient for an agent to use correctly without additional documentation.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description cannot add parameter-level detail, but it thoroughly explains the output fields, which indirectly helps an agent understand what the tool returns. No parameter information is needed beyond the empty schema.

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

Purpose5/5

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

The description clearly defines the tool's purpose: 'The fort's tame animal economy as facts.' It distinguishes itself from siblings by stating that 'every prior tool sees hostiles (threats) or nothing at all here,' making it the definitive tool for tame animal data. The extensive field enumeration further clarifies its scope.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool by noting that other tools either see hostiles or nothing here, implying this is the go-to for tame animal information. It also clarifies exclusions (e.g., caravan animals) and gates (fog-of-war), but does not explicitly name alternative tools for specific use cases beyond the initial distinction.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alexanderolvera/dfhack-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server