Skip to main content
Glama

Reference normalizer

nabu_clarify
Read-only

Normalize partial, misspelled, or half-remembered work and passage references into honest candidates and unique URNs, flagging ambiguous matches instead of guessing.

Instructions

The reference normalizer: give a partial, misspelled, or half-remembered work or passage reference — a title prefix ("Ilia"), a misspelling ("Illiad"), a title plus citation ("Iliad 1.1"), or a full/partial urn — and get an honest reading of it: is_ref (does it name held text: a urn, or an EXACT document title [+ citation]), resolved_urn ONLY when it parses UNIQUELY (open it with nabu_show), ref (passage · document · citation_prefix · range, with license fields), structure (what a deeper citation looks like there: passage count, first/last citation, depth, an example urn and a range example), and completions — typed CANDIDATES {title, key, type: document|source|lemma|place, is_primary (the matched name is the primary title, not an alias), match: exact|prefix|token|fuzzy (a misspelling guess, said so), source, language, license_class; present-only detail, ref_urn}. Never a silent guess: two editions sharing a title, or a citation several hold, resolve to NOTHING and list every reading (ref_urn each). Diacritics optional (οδυσσεια finds Ὀδύσσεια). Backed by a precompiled title index; when it is not built the note says so and urn input still resolves. Bounded (default 10, max 50).

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum candidates returned.
queryYesThe reference to normalize: a title (or its prefix/misspelling), a title plus citation ("Iliad 1.1"), a source name/slug, a dictionary headword, a place name, or a full/partial urn.
include_restrictedNoAlso serve research_private/restricted material. Default false and deliberately so: this surface must never leak private or license-restricted texts casually. Set true only when the requester understands and will honor the restriction.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.7.0

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint, and the description adds substantial behavior: it never silently guesses, ambiguous cases return nothing plus every reading, diacritics are folded, results are bounded (default 10, max 50), and it degrades gracefully when the precompiled title index is absent. That is exactly the kind of failure-mode and fallback disclosure annotations cannot carry.

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?

Purpose is front-loaded, but the body is a single dense run of nested parentheticals defining five return fields inline, which is hard to scan. Most content earns its place given there is no output schema, but the framing is a wall rather than a structured breakdown.

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?

With no output schema, the description carries the return-value burden and does so field by field: is_ref, resolved_urn, ref, structure, and completions with each candidate's type, match quality, and primary/alias flag. Combined with the ambiguity and index-availability caveats, an agent has enough to call it and interpret the result correctly.

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 the baseline is 3, but the description adds real input meaning: worked examples of acceptable forms ("Ilia", "Illiad", "Iliad 1.1") and the diacritic-insensitivity rule. It also restates the bound (default 10, max 50) already in the schema, and leaves the include_restricted parameter's privacy implications to the schema rather than covering them here.

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?

It names a specific verb+resource (normalize a reference) and enumerates the accepted input shapes: title prefix, misspelling, title plus citation, or partial/full urn. It also distinguishes itself from nabu_show by saying resolved_urn should be opened there, so an agent can place it in the pipeline without opening either schema.

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?

Clear context: use this when the reference is partial, misspelled, or half-remembered, and follow a unique resolution into nabu_show. The ambiguity rule (two editions sharing a title resolve to nothing and list readings) tells the agent what to do when the call is inconclusive. No explicit when-not-to-use or statement of when nabu_search would be the better entry point, so it stops short of a 5.

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