Skip to main content
Glama

List the languages an artifact exists in

list_languages

Reports every language variant that currently exists for a specific SpecMgr artifact by type and ID, including parse status and errors from a read-only lookup.

Instructions

Read-only. Report the language codes one artifact currently exists in. type is one of req, uc, tsk, qa, prb, gol, rsk, dec, sop, vcr, sysrs, txt (feat and adr documents are always English and are rejected with a ValueError) and id the artifact's id, shared by every language variant. Returns a LanguageListResult: languages -- 'en' first when the EN source exists (it is never invented: an id with variants but no EN source lists no 'en'), then every other language holding a variant, sorted by code -- and one entries row per language with language, path (the resolved absolute file path), parseable, and error; a variant that exists but fails to parse is listed with parseable=false and the parse error (byte-identical to the domain's list_/get_ failure text for that file), never dropped and never raised. Only .md documents under docs/{type}/ (EN) and docs/{type}/{language}/ participate; non-.md siblings and directory names that are not a two-letter lowercase language code are ignored. An id that exists in no language raises the domain's own not-found error; an unknown type or a path-injection/wrong-format id is a ValueError raised before any file access. It writes, creates and invalidates nothing. To translate use the translate_artifact prompt; to compare a variant with its source use check_translation_drift.

Input Schema

NameRequiredDescriptionDefault
idYes
typeYes

Output Schema

NameRequiredDescriptionDefault
idYes
typeYes
entriesYes
languagesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.38.0

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full behavioral burden and meets it: it declares read-only status twice ('It writes, creates and invalidates nothing'), specifies that unparseable variants are listed with parseable=false and never raised or dropped, and distinguishes the error classes (domain not-found vs. ValueError before any file access). It also discloses scoping rules for what files participate, which an agent could not infer from 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.

Conciseness4/5

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

It is front-loaded with the essential statement and the return semantics follow a logical order. However, it is a single dense paragraph in which the parameter rules, file-scoping rules, and error taxonomy are packed together, so it could be broken up for scanability without losing any 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?

For a two-parameter read tool with an output schema and no annotations, nothing an agent needs is missing: invocation preconditions, failure modes, and the non-obvious 'en is never invented' rule are all stated. The return-value prose partly overlaps the output schema, but it adds semantics the schema cannot express.

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

Parameters5/5

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

Schema coverage is 0% and the schema's property titles are bare 'Id' and 'Type', so the description must compensate, and it does: it enumerates the accepted type codes, singles out the two that are rejected with ValueError (feat and adr), and explains that `id` is shared by every language variant. That is meaning well beyond the enum in the input 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 opens with a specific verb and resource: 'Report the language codes one artifact currently exists in.' That is clearly distinguishable from the dozens of sibling list_<type> tools, which enumerate artifacts rather than variants of one artifact, and it explicitly routes comparison work to check_translation_drift.

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 names two alternatives with the condition that selects each: 'To translate use the translate_artifact prompt' and 'to compare a variant with its source use check_translation_drift.' That is clear routing rather than just context. It never states the inverse exclusion (for example, that this is the prerequisite call before translating), 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.

Deploy Server

Other Tools