Skip to main content
Glama

Artifacts and engravings

artifacts_and_engravings

Fetch the current fort's artifacts and map-wide engraving summaries, with pagination and optional world scope for site/world comparisons.

Instructions

The fort's art, as labeled facts. Returns the named ARTIFACTS (paginated), SITE-SCOPED BY DEFAULT — only artifacts belonging to the loaded fort, which is almost always what is meant by "our artifacts". Pass scope="world" for every artifact in the world (an old world holds hundreds that have nothing to do with your fort; in world scope each row carries site_local so the two are still distinguishable). artifact_count always reflects the scope actually applied, and artifact_count_world always gives the unfiltered world total. Each artifact carries its name (dwarven + translated), item type and base material, created value, quality, maker (with a live unit_id ONLY when the maker is a living current citizen, else just the historical-figure name), the decorations on it (bands/covered/rings/images with their materials), and any engraved inscription text (e.g. a slab's secret). Plus an aggregated ENGRAVINGS summary for the map: engravings grouped BY SUBJECT with counts (never itemized per tile), a quality histogram, and the top engravers. IMPORTANT precondition on engraving subjects: DF does not populate the world's art-image table in fortress mode (art_images_loaded is false on every fort observed so far), so the human-readable scene an engraving depicts is NOT available — subjects_resolvable=false and each subject is keyed by its stable image reference ("image #2:158") instead. This is reported, never fabricated, but do not plan on describing what the fort's art depicts: the engraving read is reliable for counts, quality distribution, and which dwarves did the engraving, not for iconography. Use limit + next_cursor to page through artifacts; see caps for all documented limits. Returns {"error":"no fort loaded"} if no fort is active.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoArtifacts per page (default 25, max 100). Engravings are always fully aggregated.
scopeNoWhich artifacts to return. "site" (default) = only this fort's artifacts. "world" = every artifact in the world, each tagged with site_local.
cursorNoOpaque pagination cursor from a previous call's next_cursor; omit for the first page.
Behavior5/5

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

With no annotations provided, the description carries the full burden and excels: it discloses pagination behavior ('Use limit + next_cursor'), scope-dependent counts ('artifact_count always reflects the scope actually applied'), conditional maker unit_id ('only when the maker is a living current citizen'), the critical limitation that art_images_loaded is false (subjects_resolvable=false), and the error response ('{"error":"no fort loaded"}'). This exceeds typical transparency.

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

Conciseness5/5

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

Although long, every sentence serves a purpose. It opens with a crisp summary, then systematically covers artifact fields, engraving aggregation, a critical precondition, pagination, and error handling. The structure is front-loaded with the core purpose and flows logically, with no redundant or filler content.

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

Completeness5/5

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

Without an output schema, the description fully describes the return shape: artifact fields (name, type, material, value, quality, maker, decorations, inscriptions) and the engraving summary (grouped by subject, quality histogram, top engravers). It covers limitations, errors, and pagination. For a tool of this complexity, nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaningful nuance beyond the schema: it explains the semantic difference between site and world scope ('in world scope each row carries site_local so the two are still distinguishable') and how artifact_count reflects scope. Pagination via cursor is also clarified ('Use limit + next_cursor to page through artifacts'). This is more than a token addition, earning a 4.

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 opens with 'The fort's art, as labeled facts' and immediately specifies 'Returns the named ARTIFACTS (paginated), SITE-SCOPED BY DEFAULT' plus 'an aggregated ENGRAVINGS summary'. This clearly names the resource (artifacts and engravings) and the verbs (returns, aggregated), making it fully distinguishable from sibling tools like site_history or map_overview.

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

Usage Guidelines4/5

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

It explicitly guides scope selection: 'SITE-SCOPED BY DEFAULT — only artifacts belonging to the loaded fort, which is almost always what is meant by "our artifacts"' and 'Pass scope="world" for every artifact'. It also warns against relying on iconography: 'do not plan on describing what the fort's art depicts'. However, no alternative tools are named, so it stops short of the 'alternatives' bar for a 5.

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