Skip to main content
Glama

List referenced artifacts

list_references

Resolve and page cross-references in a source document by scanning its reference tags and returning each linked document's type, ID, title, and path.

Instructions

Cross-references of one source document, resolved and paged. type is the source document's domain (one of adr, req, uc, tsk, qa, prb, gol, rsk, dec, sop, feat, vcr, sysrs, txt) and id the source's own identifier. The tool scans the source's frontmatter-stripped body for reference tags (the shared reference-tag vocabulary in general.tools._references: the UUID tags GOL/PRB/QA/UC/REQ/RSK/DEC/ADR/VCR/SYSRS/TXT, each carrying a canonical uuid id, plus FEAT, carrying the full feat-NNN-slug id or the bare feat-NNN number; case-insensitive tag, space/tab/dash separator, anywhere in a line), dedupes repeated occurrences (first-occurrence order preserved), and resolves each unique reference to the referenced document in its own target domain. Returns a PagedResult of one ReferenceRow per unique reference: type, id, title (the referenced document's H1), and path (the referenced document's resolved absolute file path). A reference that cannot be resolved on disk is a row with null title/path and the target domain's not-found message in error -- it never raises. max_results/offset control paging (default page size 25, capped at 100); out-of-range values are clamped, not errored. An invalid id (path-injection attempt or wrong format for type) is a ValueError raised before any file access; a missing source document is the source domain's own XNotFoundError.

Input Schema

NameRequiredDescriptionDefault
idYes
typeYes
offsetNo
max_resultsNo

Output Schema

NameRequiredDescriptionDefault
totalYes
offsetYes
resultsYes
truncatedYes
error_countNo
max_resultsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.38.0
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "adr",
      -  "req",
      -  "uc",
      -  "tsk",
      -  "qa",
      -  "prb",
      -  "gol",
      -  "rsk",
      -  "dec",
      -  "sop",
      -  "feat",
      -  "vcr",
      -  "sysrs"
      -]New value: +[
      +  "adr",
      +  "req",
      +  "uc",
      +  "tsk",
      +  "qa",
      +  "prb",
      +  "gol",
      +  "rsk",
      +  "dec",
      +  "sop",
      +  "feat",
      +  "vcr",
      +  "sysrs",
      +  "txt"
      +]
    • changedOutput schema / $defs / ReferenceRow / description
      Previous value: -"One cross-reference extracted from a source document, plus its resolution outcome.\n\nParameters\n----------\ntype:\n    The referenced document's target domain name, lowercase -- one of\n    ``general.tools._references.REFERENCE_TYPES`` (``gol``/``prb``/\n    ``qa``/``uc``/``req``/``rsk``/``dec``/``adr``/``vcr``/``sysrs``/\n    ``feat``; the reference tag itself is the uppercase form of this\n    value).\nid:\n    The referenced document's own specmgr-assigned identifier, as it\n    appeared in the source body (lowercased) -- a canonical\n    lowercase-hex UUID for the UUID tags, or, for ``feat``, the\n    full ``feat-NNN-slug`` id or the bare ``feat-NNN`` number.\ntitle:\n    The referenced document's ``# {title}`` H1, re-derived from the\n    resolved document on disk (``doc.body.text`` for the flat target\n    domains, the ``feat`` H1 with its ``Feature: `` prefix stripped\n    via ``feature_title``, ``doc.body.title`` for ``adr``) -- or\n    ``None`` if the reference could not be resolved (``error`` is\n    set).\npath:\n    The referenced document's real, absolute (``.resolve()``d)\n    on-disk file path, for a caller that wants to read it directly\n    instead of going through the matching ``get_<domain>`` tool -- or\n    ``None`` if the reference could not be resolved (``error`` is\n    set).\nerror:\n    ``None`` for a successfully resolved reference. Otherwise, the\n    ``str()`` of the target domain's ``XNotFoundError`` raised while\n    resolving this reference, so a caller can see *why* it failed\n    without a second round trip."New value: +"One cross-reference extracted from a source document, plus its resolution outcome.\n\nParameters\n----------\ntype:\n    The referenced document's target domain name, lowercase -- one of\n    ``general.tools._references.REFERENCE_TYPES`` (``gol``/``prb``/\n    ``qa``/``uc``/``req``/``rsk``/``dec``/``adr``/``vcr``/``sysrs``/\n    ``txt``/``feat``; the reference tag itself is the uppercase form\n    of this value).\nid:\n    The referenced document's own specmgr-assigned identifier, as it\n    appeared in the source body (lowercased) -- a canonical\n    lowercase-hex UUID for the UUID tags, or, for ``feat``, the\n    full ``feat-NNN-slug`` id or the bare ``feat-NNN`` number.\ntitle:\n    The referenced document's ``# {title}`` H1, re-derived from the\n    resolved document on disk (``doc.body.text`` for the flat target\n    domains, the ``feat`` H1 with its ``Feature: `` prefix stripped\n    via ``feature_title``, ``doc.body.title`` for ``adr``) -- or\n    ``None`` if the reference could not be resolved (``error`` is\n    set).\npath:\n    The referenced document's real, absolute (``.resolve()``d)\n    on-disk file path, for a caller that wants to read it directly\n    instead of going through the matching ``get_<domain>`` tool -- or\n    ``None`` if the reference could not be resolved (``error`` is\n    set).\nerror:\n    ``None`` for a successfully resolved reference. Otherwise, the\n    ``str()`` of the target domain's ``XNotFoundError`` raised while\n    resolving this reference, so a caller can see *why* it failed\n    without a second round trip."
  2. First observedv0.36.0

TDQS

A4.4/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: it discloses the scan algorithm (frontmatter-stripped body, tag vocabulary, separators, case-insensitivity), dedupe order, per-row resolution against disk, and the exact failure contract (unresolvable reference yields null title/path plus an error string and never raises; invalid id raises ValueError before file access; missing source raises XNotFoundError). Paging clamping behavior is also stated.

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

Conciseness3/5

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

The first sentence is well front-loaded, but the rest is two enormous run-on sentences with nested parentheticals that are hard to parse on first read. The enumerated 14-value type list duplicates the enum already present in the schema, costing space without adding information.

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 4-parameter read tool with no annotations, the definition covers inputs, algorithm, dedupe/ordering, per-row failure handling, and paging limits. Return structure is described even though an output schema exists, so 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.

Parameters5/5

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: `type` is defined as the source document's own domain, `id` as the source's own identifier (with format/injection validation semantics), and max_results/offset get defaults (25), a cap (100), and clamping rather than erroring. That is meaningful semantics the bare schema does not convey.

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+scope: "Cross-references of one source document, resolved and paged." An agent immediately knows this is not a document fetch (get_*) nor a corpus-wide search, and the scan/resolve behavior distinguishes it from link-oriented siblings.

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?

Usage is implied by "of one source document" and the required type/id pair, and the error contract tells the agent what happens on bad input. But there is no explicit when-to-use guidance and no routing against nearby siblings such as find_related or get_reference_diagram, so the agent must infer which tool surfaces which relationship view.

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