Skip to main content
Glama

Server Details

Grounds LLMs in the real Livonian dictionary: attested words, inflections, romanization.

Ownership verified
Status
Healthy
Uptime
17.5% over 61 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct operation: search retrieves dictionary entries, get_inflections fetches paradigm tables by handle, romanize transforms orthography to ASCII, and deromanize reverse-looks-up from ASCII. The descriptions explicitly clarify boundaries (e.g., deromanize is the inverse of romanize; get_inflections is never a first call).

Naming Consistency5/5

All four tools use a consistent `livonian_` prefix followed by a clear verb or verb_noun pattern: deromanize, get_inflections, romanize, search. No mixed conventions or vague verbs.

Tool Count5/5

Four tools is well-scoped for a focused dictionary/lookup server: search, inflection retrieval, and bidirectional romanization cover the domain without redundancy or thinness.

Completeness4/5

The surface covers lookup, paradigm retrieval, and romanization/deromanization, which is a complete lifecycle for this domain. Minor gaps might include no explicit cache-clearing or rate-limit status tool, but core functionality is covered.

Available Tools

4 tools
livonian_deromanizeFind the Livonian word(s) matching a romanized spellingA
Read-onlyIdempotent
Inspect

Find the real Livonian word(s) whose pronunciation-romanization matches this clean-ASCII input — the inverse direction of livonian_romanize. Because romanize is lossy, this is a LOOKUP against the words already in the dictionary cache: attested spellings come back as source=dictionary. If none match, a single best-effort reconstruction is returned (source=reconstruction, approximate=true) — a guess, not attested. Coverage grows as words are cached, so an identical query may return a reconstruction now and a dictionary hit later.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesRomanized (clean-ASCII) Livonian text to resolve back to real orthography. Returns the attested dictionary spelling(s) whose romanization matches (source=dictionary, exact) — several may match one ambiguous key. On a miss, a single best-effort reconstruction (source=reconstruction, approximate=true), which is a guess: romanize is lossy, so case, stød, palatalization and macron length cannot be recovered.

Output Schema

ParametersJSON Schema
NameRequiredDescription
candidatesYes
approximateYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds genuinely novel behavior: it is a cache lookup, misses yield a single approximate reconstruction ('a guess, not attested'), and coverage grows so an identical query may later return a dictionary hit. That volatility disclosure is exactly the kind of context structured fields 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.

Conciseness4/5

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

Front-loads the core purpose, then layers in lookup semantics and the reconstruction caveat in logically ordered sentences. Dense but every sentence carries weight; minor tightening possible around the source=reconstruction explanation.

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?

An output schema exists, so return values need no explanation, yet the description still clarifies the source=dictionary vs source=reconstruction distinction and the approximate=true flag. For a one-parameter lookup with rich annotations, nothing an agent needs is missing.

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

Parameters3/5

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

With a single parameter and 100% schema description coverage, the schema already documents format, length bounds, and the source/approximate return semantics. The description reinforces the inverse-direction framing but adds no syntax or format detail beyond what the schema provides, so the baseline 3 is appropriate.

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?

States a specific verb and resource ('Find the real Livonian word(s) whose pronunciation-romanization matches this clean-ASCII input') and explicitly frames itself as the inverse of `livonian_romanize`, which cleanly distinguishes it from that sibling.

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?

Gives clear context for when to reach for it (the reverse direction of romanize, resolving romanized input back to orthography). It does not, however, compare against the other siblings like `livonian_search`, so the routing guidance is good but not complete.

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

livonian_get_inflectionsGet Livonian inflection tableA
Read-onlyIdempotent
Inspect

Fetch the full declension (nouns) or conjugation (verbs) table for a word identified by a search result's inflection handle (entry_id + word_class) — the exact case, number, tense, not a guessed ending. Use this only when a search ran without inline forms, or to fetch a match a broad search left un-expanded. Never a first call — the handle values only come from livonian_search results, and a default search already returns each match's table inline, so calling this afterwards just re-fetches what you have.

Returns Markdown — a nominal gets one case × {singular, plural} table; a verb gets a table per mood/tense (person × {affirmative, negative}, the negation auxiliary folded into the negative) plus its principal-parts and participle lists — or a clean not-found message. (Grammatical labels are normalised to English; Livonian forms stay verbatim.) The same table rides along as structuredContent with the shape {"result": } per the declared outputSchema — switch on result.category ('nominal' | 'verbal' | 'not_found') before reading the body. Results are cached server-side (repeats are instant) and calls are rate limited — on a rate-limit error, wait a few seconds and retry. Table content is from livonian.tech (CC BY-SA 4.0 — attribute if republished).

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesThe word id from a search result's inflection handle. Accepts a number or a digit-string (e.g. 17746 or "17746").
word_classYesThe word-class code from a search result's inflection handle (e.g. 's' = noun, 'adj' = adjective, 'vi' = intransitive verb, 'vt' = transitive verb).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing return shape (Markdown tables per word class, not-found message), server-side caching, rate limiting with retry guidance, license/attribution requirements, and label normalization. The annotations already cover read-only/idempotent safety, so this adds genuinely new operational context.

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?

Front-loaded with the core action and the negative guidance, then moves to return format and operational notes. Dense but every sentence carries usable information; the parenthetical license and normalization notes are slightly parenthetical clutter but still earn their place.

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 an output schema present, the description needn't restate the return contract, yet it usefully bridges it by naming result.category values ('nominal' | 'verbal' | 'not_found') to switch on. Prerequisite, non-first-call constraint, failure behavior, and rate limits are all covered.

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% and the description still adds provenance: both params come from a search result's 'inflection handle' and must be passed together, which is meaning the schema alone doesn't convey. It does not restate the accepted digit-string or enum codes, so it stays complementary rather than duplicative.

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?

States a specific verb (fetch) and resource (declension/conjugation table) and pins the scope precisely: 'the exact case, number, tense, not a guessed ending.' It is clearly distinguishable from livonian_search, which produces the handle this tool consumes.

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

Usage Guidelines5/5

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

Explicit when-to-use ('only when a search ran without inline forms, or to fetch a match a broad search left un-expanded'), explicit when-not ('Never a first call', 'calling this afterwards just re-fetches what you have'), and it names the prerequisite source (livonian_search results) for the handle values.

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

livonian_romanizeRomanize Livonian to clean ASCIIA
Read-onlyIdempotent
Inspect

Strip Livonian orthography down to clean, pronounceable ASCII for an English-trained downstream (a voice/TTS, a search box). See the text parameter doc for the exact letter mappings. Returns Markdown plus the romanized output as structuredContent matching the declared outputSchema. Pure local transform: no dictionary lookup, no network, and the output is always ASCII.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesLivonian text to reduce to clean, pronounceable ASCII. Strips macrons, diacritics and capitals (ā→aa, š→sh, õ→u), softens a palatalized consonant (ņ ļ ŗ ţ ḑ) only before a vowel (ņ+a→nya, else ikšiggiņ→ikshiggin), and hyphenates the broken tone (si'zzõl→siz-zul) and long-vowel diphthong glides (kīen→kee-en). Pass a word, phrase, or several lines.

Output Schema

ParametersJSON Schema
NameRequiredDescription
textYesThe romanized ASCII output.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real value beyond them: it declares the transform is pure and local (no dictionary lookup, no network) and that output is always ASCII. It does not address edge behavior such as exceeding the 4000-char maxLength or non-Livonian input, which keeps it from a 5.

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?

Three sentences, front-loaded with the transformation, then the consumer, then the execution profile. Every sentence carries distinct information and nothing is redundant with the schema or annotations.

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

Completeness4/5

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

With an outputSchema present and 100% parameter coverage, the description doesn't need to explain return values, and it correctly confines itself to purpose, audience, and the pure-local-transform contract. It is nearly complete; only failure/edge behavior (length overflow, non-Livonian characters) is left unstated.

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

Parameters3/5

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

Schema description coverage is 100% and the `text` parameter doc already carries the full mapping table, so the schema does the heavy lifting. The description only cross-references that doc ('See the `text` parameter doc for the exact letter mappings') rather than adding new parameter semantics, which is the textbook baseline-3 case.

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+resource: 'Strip Livonian orthography down to clean, pronounceable ASCII.' Combined with the direction of transformation (Livonian → ASCII), an agent can immediately separate this from livonian_deromanize, the inverse sibling, without opening a schema.

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?

It names the intended consumers ('an English-trained downstream (a voice/TTS, a search box)'), which implies when to reach for it. However, it never explicitly states when NOT to use it or names livonian_deromanize as the alternative for the reverse direction, so the routing guidance is only implied.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedlivonian_get_inflections7 fields changed
      • addedInput schema / properties / word_class / enum
        Added value: +[
        +  "adj",
        +  "s",
        +  "vi",
        +  "vt"
        +]
      • removedInput schema / properties / word_class / maxLength
        Removed value: -8
      • removedInput schema / properties / word_class / minLength
        Removed value: -1
      • removedInput schema / properties / word_class / pattern
        Removed value: -"^[a-z]+$"
      • changedOutput schema / $defs / NominalParadigm / properties / source / default
        Previous value: -"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)"New value: +"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/) Adapted: reformatted and condensed from the original."
      • changedOutput schema / $defs / ParadigmNotFound / properties / source / default
        Previous value: -"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)"New value: +"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/) Adapted: reformatted and condensed from the original."
      • changedOutput schema / $defs / VerbalParadigm / properties / source / default
        Previous value: -"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)"New value: +"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/) Adapted: reformatted and condensed from the original."
    • Changedlivonian_search4 fields changed
      • changedOutput schema / $defs / NominalParadigm / properties / source / default
        Previous value: -"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)"New value: +"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/) Adapted: reformatted and condensed from the original."
      • changedOutput schema / $defs / ParadigmNotFound / properties / source / default
        Previous value: -"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)"New value: +"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/) Adapted: reformatted and condensed from the original."
      • changedOutput schema / $defs / VerbalParadigm / properties / source / default
        Previous value: -"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)"New value: +"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/) Adapted: reformatted and condensed from the original."
      • changedOutput schema / properties / source / default
        Previous value: -"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Vāvere, Signis, Damberg, Pētõr, Kurpniece, Milda, Balodis, Uldis, Tuisk, Tuuli, Kūla, Gita, Tomingas, Marili, Soosaar Sven-Erik, Sedláčková, Anna & Jurgenovskis, Toms. 2024. Livonian lexicographic database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)"New value: +"Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Vāvere, Signis, Damberg, Pētõr, Kurpniece, Milda, Balodis, Uldis, Tuisk, Tuuli, Kūla, Gita, Tomingas, Marili, Soosaar Sven-Erik, Sedláčková, Anna & Jurgenovskis, Toms. 2024. Livonian lexicographic database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/) Adapted: reformatted and condensed from the original."
  2. 1 tool update
    • Addedlivonian_deromanize
  3. 6 tool updates
    • Removedget_inflections
    • Addedlivonian_get_inflections
    • Addedlivonian_romanize
    • Addedlivonian_search
    • Removedromanize_livonian
    • Removedsearch_livonian
  4. 2 tool updates
    • Changedget_inflections13 fields changed
      • addedInput schema / properties / entry_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "The word id from a search result's inflection handle. Accepts a number or a digit-string (e.g. 17746 or \"17746\").",
        +  "title": "Entry Id"
        +}
      • removedInput schema / properties / vards_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "string"
        -    }
        -  ],
        -  "description": "The word id from a search result's inflection handle. Accepts a number or a digit-string (e.g. 17746 or \"17746\").",
        -  "title": "Vards Id"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "vards_id",
        -  "word_class"
        -]New value: +[
        +  "entry_id",
        +  "word_class"
        +]
      • addedOutput schema / $defs / NominalParadigm / properties / entry_id
        Added value: +{
        +  "title": "Entry Id",
        +  "type": "string"
        +}
      • removedOutput schema / $defs / NominalParadigm / properties / vards_id
        Removed value: -{
        -  "title": "Vards Id",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / NominalParadigm / required
        Previous value: -[
        -  "vards_id",
        -  "word_class",
        -  "cases"
        -]New value: +[
        +  "entry_id",
        +  "word_class",
        +  "cases"
        +]
      • changedOutput schema / $defs / ParadigmNotFound / description
        Previous value: -"No paradigm for this vards_id/word_class (the morphology DB has none, or the\nhandle was wrong). ``found`` is False and there is no table body."New value: +"No paradigm for this entry_id/word_class (the morphology DB has none, or the\nhandle was wrong). ``found`` is False and there is no table body."
      • addedOutput schema / $defs / ParadigmNotFound / properties / entry_id
        Added value: +{
        +  "title": "Entry Id",
        +  "type": "string"
        +}
      • removedOutput schema / $defs / ParadigmNotFound / properties / vards_id
        Removed value: -{
        -  "title": "Vards Id",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / ParadigmNotFound / required
        Previous value: -[
        -  "vards_id",
        -  "word_class"
        -]New value: +[
        +  "entry_id",
        +  "word_class"
        +]
      • addedOutput schema / $defs / VerbalParadigm / properties / entry_id
        Added value: +{
        +  "title": "Entry Id",
        +  "type": "string"
        +}
      • removedOutput schema / $defs / VerbalParadigm / properties / vards_id
        Removed value: -{
        -  "title": "Vards Id",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / VerbalParadigm / required
        Previous value: -[
        -  "vards_id",
        -  "word_class",
        -  "finite",
        -  "nonfinite"
        -]New value: +[
        +  "entry_id",
        +  "word_class",
        +  "finite",
        +  "nonfinite"
        +]
    • Changedsearch_livonian17 fields changed
      • changedOutput schema / $defs / Entry / description
        Previous value: -"One dictionary entry (one upstream result card): the headword with its\npronunciation, part of speech, paradigm anchors, and senses.\n\n``vards_id`` + ``word_class`` are the same anchors carried by an\n:class:`InflectionHandle` — feed them to ``get_inflections`` for the full paradigm.\nEvery field except ``headword``/``gloss`` defaults, so a card missing a\npronunciation, type code, or senses still validates."New value: +"One dictionary entry (one upstream result card): the headword with its\npronunciation, part of speech, paradigm anchors, and senses.\n\n``entry_id`` + ``word_class`` are the same anchors carried by an\n:class:`InflectionHandle` — feed them to ``get_inflections`` for the full paradigm.\nEvery field except ``headword``/``gloss`` defaults, so a card missing a\npronunciation, type code, or senses still validates."
      • addedOutput schema / $defs / Entry / properties / entry_id
        Added value: +{
        +  "default": "",
        +  "description": "Numeric word id for the forms endpoint.",
        +  "title": "Entry Id",
        +  "type": "string"
        +}
      • removedOutput schema / $defs / Entry / properties / vards_id
        Removed value: -{
        -  "default": "",
        -  "description": "Numeric word id for the forms endpoint.",
        -  "title": "Vards Id",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / InflectionHandle / description
        Previous value: -"A reliable, structured anchor for fetching a full paradigm. Feed\n``vards_id`` + ``word_class`` to ``get_inflections`` — or ask ``search`` to\ninclude the table inline (``forms``)."New value: +"A reliable, structured anchor for fetching a full paradigm. Feed\n``entry_id`` + ``word_class`` to ``get_inflections`` — or ask ``search`` to\ninclude the table inline (``forms``)."
      • addedOutput schema / $defs / InflectionHandle / properties / entry_id
        Added value: +{
        +  "description": "Numeric word id used by the forms endpoint.",
        +  "title": "Entry Id",
        +  "type": "string"
        +}
      • removedOutput schema / $defs / InflectionHandle / properties / vards_id
        Removed value: -{
        -  "description": "Numeric word id used by the forms endpoint.",
        -  "title": "Vards Id",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / InflectionHandle / required
        Previous value: -[
        -  "vards_id",
        -  "word_class"
        -]New value: +[
        +  "entry_id",
        +  "word_class"
        +]
      • addedOutput schema / $defs / NominalParadigm / properties / entry_id
        Added value: +{
        +  "title": "Entry Id",
        +  "type": "string"
        +}
      • removedOutput schema / $defs / NominalParadigm / properties / vards_id
        Removed value: -{
        -  "title": "Vards Id",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / NominalParadigm / required
        Previous value: -[
        -  "vards_id",
        -  "word_class",
        -  "cases"
        -]New value: +[
        +  "entry_id",
        +  "word_class",
        +  "cases"
        +]
      • changedOutput schema / $defs / ParadigmNotFound / description
        Previous value: -"No paradigm for this vards_id/word_class (the morphology DB has none, or the\nhandle was wrong). ``found`` is False and there is no table body."New value: +"No paradigm for this entry_id/word_class (the morphology DB has none, or the\nhandle was wrong). ``found`` is False and there is no table body."
      • addedOutput schema / $defs / ParadigmNotFound / properties / entry_id
        Added value: +{
        +  "title": "Entry Id",
        +  "type": "string"
        +}
      • removedOutput schema / $defs / ParadigmNotFound / properties / vards_id
        Removed value: -{
        -  "title": "Vards Id",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / ParadigmNotFound / required
        Previous value: -[
        -  "vards_id",
        -  "word_class"
        -]New value: +[
        +  "entry_id",
        +  "word_class"
        +]
      • addedOutput schema / $defs / VerbalParadigm / properties / entry_id
        Added value: +{
        +  "title": "Entry Id",
        +  "type": "string"
        +}
      • removedOutput schema / $defs / VerbalParadigm / properties / vards_id
        Removed value: -{
        -  "title": "Vards Id",
        -  "type": "string"
        -}
      • changedOutput schema / $defs / VerbalParadigm / required
        Previous value: -[
        -  "vards_id",
        -  "word_class",
        -  "finite",
        -  "nonfinite"
        -]New value: +[
        +  "entry_id",
        +  "word_class",
        +  "finite",
        +  "nonfinite"
        +]
  5. 3 tool updates
    • Changedget_inflections1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "NominalParadigm": {
        +      "description": "Declension of a noun/adjective/numeral/pronoun: case → {singular, plural}.\n\n``category`` discriminates this from the verbal and not-found shapes — switch on it\nbefore reading the body.",
        +      "properties": {
        +        "cases": {
        +          "additionalProperties": {
        +            "$ref": "#/$defs/NumberForms"
        +          },
        +          "description": "Case name (English, lower-case) → its singular/plural forms, in paradigm order, e.g. 'nominative', 'genitive', 'partitive'.",
        +          "title": "Cases",
        +          "type": "object"
        +        },
        +        "category": {
        +          "const": "nominal",
        +          "default": "nominal",
        +          "title": "Category",
        +          "type": "string"
        +        },
        +        "found": {
        +          "const": true,
        +          "default": true,
        +          "title": "Found",
        +          "type": "boolean"
        +        },
        +        "source": {
        +          "default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
        +          "title": "Source",
        +          "type": "string"
        +        },
        +        "vards_id": {
        +          "title": "Vards Id",
        +          "type": "string"
        +        },
        +        "word_class": {
        +          "title": "Word Class",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "vards_id",
        +        "word_class",
        +        "cases"
        +      ],
        +      "title": "NominalParadigm",
        +      "type": "object"
        +    },
        +    "NumberForms": {
        +      "description": "A nominal cell: the two number forms of one case. Livonian forms are verbatim.",
        +      "properties": {
        +        "plural": {
        +          "title": "Plural",
        +          "type": "string"
        +        },
        +        "singular": {
        +          "title": "Singular",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "singular",
        +        "plural"
        +      ],
        +      "title": "NumberForms",
        +      "type": "object"
        +    },
        +    "ParadigmNotFound": {
        +      "description": "No paradigm for this vards_id/word_class (the morphology DB has none, or the\nhandle was wrong). ``found`` is False and there is no table body.",
        +      "properties": {
        +        "category": {
        +          "const": "not_found",
        +          "default": "not_found",
        +          "title": "Category",
        +          "type": "string"
        +        },
        +        "found": {
        +          "const": false,
        +          "default": false,
        +          "title": "Found",
        +          "type": "boolean"
        +        },
        +        "source": {
        +          "default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
        +          "title": "Source",
        +          "type": "string"
        +        },
        +        "vards_id": {
        +          "title": "Vards Id",
        +          "type": "string"
        +        },
        +        "word_class": {
        +          "title": "Word Class",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "vards_id",
        +        "word_class"
        +      ],
        +      "title": "ParadigmNotFound",
        +      "type": "object"
        +    },
        +    "Polarity": {
        +      "description": "A verbal cell: the two polarities of one person in one mood/tense. ``negative``\nis the ready-to-use form — the negation auxiliary (äb/äd/iz/algõ…) is already folded\nin (e.g. ``äb toup``), not orphaned in a separate column. Livonian forms are verbatim.",
        +      "properties": {
        +        "affirmative": {
        +          "title": "Affirmative",
        +          "type": "string"
        +        },
        +        "negative": {
        +          "title": "Negative",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "affirmative",
        +        "negative"
        +      ],
        +      "title": "Polarity",
        +      "type": "object"
        +    },
        +    "VerbalParadigm": {
        +      "description": "Conjugation of a verb, grouped the way the grammar is: finite moods/tenses by\nperson and polarity, plus the non-finite forms.\n\n``category`` discriminates this from the nominal and not-found shapes.",
        +      "properties": {
        +        "category": {
        +          "const": "verbal",
        +          "default": "verbal",
        +          "title": "Category",
        +          "type": "string"
        +        },
        +        "finite": {
        +          "additionalProperties": {
        +            "additionalProperties": {
        +              "$ref": "#/$defs/Polarity"
        +            },
        +            "type": "object"
        +          },
        +          "description": "Mood/tense (English, lower-case: 'present', 'past', 'conditional', …) → pronoun (Livonian, verbatim: ma/sa/ta/mēg/tēg/ne) → {affirmative, negative}. The negative already includes its auxiliary.",
        +          "title": "Finite",
        +          "type": "object"
        +        },
        +        "found": {
        +          "const": true,
        +          "default": true,
        +          "title": "Found",
        +          "type": "boolean"
        +        },
        +        "nonfinite": {
        +          "additionalProperties": {
        +            "additionalProperties": {
        +              "type": "string"
        +            },
        +            "type": "object"
        +          },
        +          "description": "Non-finite section (English, lower-case: 'principal parts', 'participles') → form label (English) → the Livonian form.",
        +          "title": "Nonfinite",
        +          "type": "object"
        +        },
        +        "source": {
        +          "default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
        +          "title": "Source",
        +          "type": "string"
        +        },
        +        "vards_id": {
        +          "title": "Vards Id",
        +          "type": "string"
        +        },
        +        "word_class": {
        +          "title": "Word Class",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "vards_id",
        +        "word_class",
        +        "finite",
        +        "nonfinite"
        +      ],
        +      "title": "VerbalParadigm",
        +      "type": "object"
        +    }
        +  },
        +  "properties": {
        +    "result": {
        +      "discriminator": {
        +        "mapping": {
        +          "nominal": "#/$defs/NominalParadigm",
        +          "not_found": "#/$defs/ParadigmNotFound",
        +          "verbal": "#/$defs/VerbalParadigm"
        +        },
        +        "propertyName": "category"
        +      },
        +      "oneOf": [
        +        {
        +          "$ref": "#/$defs/NominalParadigm"
        +        },
        +        {
        +          "$ref": "#/$defs/VerbalParadigm"
        +        },
        +        {
        +          "$ref": "#/$defs/ParadigmNotFound"
        +        }
        +      ],
        +      "title": "Result"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_inflectionsOutput",
        +  "type": "object"
        +}
    • Changedromanize_livonian1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "The MCP-facing romanization payload: the ASCII output only. ``original`` is\ndeliberately absent — like the Markdown render (see\n:func:`~livonian.languages.livonian.render.romanization_to_markdown`), the MCP\nresult reaches an LLM's context, so the raw caller text must not be echoed\nthrough it. The JSON API's :class:`Romanization` keeps the echo for\nprogrammatic callers.",
        +  "properties": {
        +    "text": {
        +      "description": "The romanized ASCII output.",
        +      "title": "Text",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "text"
        +  ],
        +  "title": "RomanizedText",
        +  "type": "object"
        +}
    • Changedsearch_livonian1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "Entry": {
        +      "description": "One dictionary entry (one upstream result card): the headword with its\npronunciation, part of speech, paradigm anchors, and senses.\n\n``vards_id`` + ``word_class`` are the same anchors carried by an\n:class:`InflectionHandle` — feed them to ``get_inflections`` for the full paradigm.\nEvery field except ``headword``/``gloss`` defaults, so a card missing a\npronunciation, type code, or senses still validates.",
        +      "properties": {
        +        "headword": {
        +          "title": "Headword",
        +          "type": "string"
        +        },
        +        "part_of_speech": {
        +          "default": "",
        +          "description": "e.g. 'noun', 'verb', 'adjective'.",
        +          "title": "Part Of Speech",
        +          "type": "string"
        +        },
        +        "pronunciation": {
        +          "default": "",
        +          "description": "Phonetic form in braces, e.g. {äm}.",
        +          "title": "Pronunciation",
        +          "type": "string"
        +        },
        +        "senses": {
        +          "items": {
        +            "$ref": "#/$defs/Sense"
        +          },
        +          "title": "Senses",
        +          "type": "array"
        +        },
        +        "type_code": {
        +          "default": "",
        +          "description": "Paradigm type code, e.g. '99', '53a'.",
        +          "title": "Type Code",
        +          "type": "string"
        +        },
        +        "vards_id": {
        +          "default": "",
        +          "description": "Numeric word id for the forms endpoint.",
        +          "title": "Vards Id",
        +          "type": "string"
        +        },
        +        "word_class": {
        +          "default": "",
        +          "description": "Word-class code, e.g. 's', 'vt', 'adj'.",
        +          "title": "Word Class",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "headword"
        +      ],
        +      "title": "Entry",
        +      "type": "object"
        +    },
        +    "Example": {
        +      "description": "One usage example for a sense: the Livonian sentence and its English translation.\n``english`` is empty when the upstream entry gives the Livonian without a gloss.",
        +      "properties": {
        +        "english": {
        +          "default": "",
        +          "title": "English",
        +          "type": "string"
        +        },
        +        "livonian": {
        +          "title": "Livonian",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "livonian"
        +      ],
        +      "title": "Example",
        +      "type": "object"
        +    },
        +    "InflectionHandle": {
        +      "description": "A reliable, structured anchor for fetching a full paradigm. Feed\n``vards_id`` + ``word_class`` to ``get_inflections`` — or ask ``search`` to\ninclude the table inline (``forms``).",
        +      "properties": {
        +        "context": {
        +          "default": "",
        +          "description": "Nearby headword / entry text.",
        +          "title": "Context",
        +          "type": "string"
        +        },
        +        "forms": {
        +          "anyOf": [
        +            {
        +              "discriminator": {
        +                "mapping": {
        +                  "nominal": "#/$defs/NominalParadigm",
        +                  "not_found": "#/$defs/ParadigmNotFound",
        +                  "verbal": "#/$defs/VerbalParadigm"
        +                },
        +                "propertyName": "category"
        +              },
        +              "oneOf": [
        +                {
        +                  "$ref": "#/$defs/NominalParadigm"
        +                },
        +                {
        +                  "$ref": "#/$defs/VerbalParadigm"
        +                },
        +                {
        +                  "$ref": "#/$defs/ParadigmNotFound"
        +                }
        +              ]
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "default": null,
        +          "description": "The full inflection paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap; category 'none' when the word has no paradigm.",
        +          "title": "Forms"
        +        },
        +        "pos_hint": {
        +          "default": "",
        +          "description": "Part-of-speech hint near the link.",
        +          "title": "Pos Hint",
        +          "type": "string"
        +        },
        +        "vards_id": {
        +          "description": "Numeric word id used by the forms endpoint.",
        +          "title": "Vards Id",
        +          "type": "string"
        +        },
        +        "word_class": {
        +          "description": "Word-class code, e.g. 's', 'vi', 'vt', 'adj'.",
        +          "title": "Word Class",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "vards_id",
        +        "word_class"
        +      ],
        +      "title": "InflectionHandle",
        +      "type": "object"
        +    },
        +    "NominalParadigm": {
        +      "description": "Declension of a noun/adjective/numeral/pronoun: case → {singular, plural}.\n\n``category`` discriminates this from the verbal and not-found shapes — switch on it\nbefore reading the body.",
        +      "properties": {
        +        "cases": {
        +          "additionalProperties": {
        +            "$ref": "#/$defs/NumberForms"
        +          },
        +          "description": "Case name (English, lower-case) → its singular/plural forms, in paradigm order, e.g. 'nominative', 'genitive', 'partitive'.",
        +          "title": "Cases",
        +          "type": "object"
        +        },
        +        "category": {
        +          "const": "nominal",
        +          "default": "nominal",
        +          "title": "Category",
        +          "type": "string"
        +        },
        +        "found": {
        +          "const": true,
        +          "default": true,
        +          "title": "Found",
        +          "type": "boolean"
        +        },
        +        "source": {
        +          "default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
        +          "title": "Source",
        +          "type": "string"
        +        },
        +        "vards_id": {
        +          "title": "Vards Id",
        +          "type": "string"
        +        },
        +        "word_class": {
        +          "title": "Word Class",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "vards_id",
        +        "word_class",
        +        "cases"
        +      ],
        +      "title": "NominalParadigm",
        +      "type": "object"
        +    },
        +    "NumberForms": {
        +      "description": "A nominal cell: the two number forms of one case. Livonian forms are verbatim.",
        +      "properties": {
        +        "plural": {
        +          "title": "Plural",
        +          "type": "string"
        +        },
        +        "singular": {
        +          "title": "Singular",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "singular",
        +        "plural"
        +      ],
        +      "title": "NumberForms",
        +      "type": "object"
        +    },
        +    "ParadigmNotFound": {
        +      "description": "No paradigm for this vards_id/word_class (the morphology DB has none, or the\nhandle was wrong). ``found`` is False and there is no table body.",
        +      "properties": {
        +        "category": {
        +          "const": "not_found",
        +          "default": "not_found",
        +          "title": "Category",
        +          "type": "string"
        +        },
        +        "found": {
        +          "const": false,
        +          "default": false,
        +          "title": "Found",
        +          "type": "boolean"
        +        },
        +        "source": {
        +          "default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
        +          "title": "Source",
        +          "type": "string"
        +        },
        +        "vards_id": {
        +          "title": "Vards Id",
        +          "type": "string"
        +        },
        +        "word_class": {
        +          "title": "Word Class",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "vards_id",
        +        "word_class"
        +      ],
        +      "title": "ParadigmNotFound",
        +      "type": "object"
        +    },
        +    "Polarity": {
        +      "description": "A verbal cell: the two polarities of one person in one mood/tense. ``negative``\nis the ready-to-use form — the negation auxiliary (äb/äd/iz/algõ…) is already folded\nin (e.g. ``äb toup``), not orphaned in a separate column. Livonian forms are verbatim.",
        +      "properties": {
        +        "affirmative": {
        +          "title": "Affirmative",
        +          "type": "string"
        +        },
        +        "negative": {
        +          "title": "Negative",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "affirmative",
        +        "negative"
        +      ],
        +      "title": "Polarity",
        +      "type": "object"
        +    },
        +    "SearchLanguage": {
        +      "description": "Which language the query word is matched against. Headwords come back in\nLivonian and glosses in English either way; this only selects the language the\nquery term is in. Codes are the site's own.",
        +      "enum": [
        +        "liv",
        +        "lat",
        +        "est",
        +        "eng"
        +      ],
        +      "title": "SearchLanguage",
        +      "type": "string"
        +    },
        +    "Sense": {
        +      "description": "One sense of a headword: its gloss and any usage examples. ``label`` is the\nupstream sense marker (``a)``, ``b)``) and is empty for a single, unlabelled sense.",
        +      "properties": {
        +        "examples": {
        +          "items": {
        +            "$ref": "#/$defs/Example"
        +          },
        +          "title": "Examples",
        +          "type": "array"
        +        },
        +        "gloss": {
        +          "title": "Gloss",
        +          "type": "string"
        +        },
        +        "label": {
        +          "default": "",
        +          "title": "Label",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "gloss"
        +      ],
        +      "title": "Sense",
        +      "type": "object"
        +    },
        +    "VerbalParadigm": {
        +      "description": "Conjugation of a verb, grouped the way the grammar is: finite moods/tenses by\nperson and polarity, plus the non-finite forms.\n\n``category`` discriminates this from the nominal and not-found shapes.",
        +      "properties": {
        +        "category": {
        +          "const": "verbal",
        +          "default": "verbal",
        +          "title": "Category",
        +          "type": "string"
        +        },
        +        "finite": {
        +          "additionalProperties": {
        +            "additionalProperties": {
        +              "$ref": "#/$defs/Polarity"
        +            },
        +            "type": "object"
        +          },
        +          "description": "Mood/tense (English, lower-case: 'present', 'past', 'conditional', …) → pronoun (Livonian, verbatim: ma/sa/ta/mēg/tēg/ne) → {affirmative, negative}. The negative already includes its auxiliary.",
        +          "title": "Finite",
        +          "type": "object"
        +        },
        +        "found": {
        +          "const": true,
        +          "default": true,
        +          "title": "Found",
        +          "type": "boolean"
        +        },
        +        "nonfinite": {
        +          "additionalProperties": {
        +            "additionalProperties": {
        +              "type": "string"
        +            },
        +            "type": "object"
        +          },
        +          "description": "Non-finite section (English, lower-case: 'principal parts', 'participles') → form label (English) → the Livonian form.",
        +          "title": "Nonfinite",
        +          "type": "object"
        +        },
        +        "source": {
        +          "default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
        +          "title": "Source",
        +          "type": "string"
        +        },
        +        "vards_id": {
        +          "title": "Vards Id",
        +          "type": "string"
        +        },
        +        "word_class": {
        +          "title": "Word Class",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "vards_id",
        +        "word_class",
        +        "finite",
        +        "nonfinite"
        +      ],
        +      "title": "VerbalParadigm",
        +      "type": "object"
        +    }
        +  },
        +  "description": "The result of a dictionary search.",
        +  "properties": {
        +    "entries": {
        +      "description": "Structured dictionary entries: headword, pronunciation, part of speech, paradigm anchors, and senses with example sentences.",
        +      "items": {
        +        "$ref": "#/$defs/Entry"
        +      },
        +      "title": "Entries",
        +      "type": "array"
        +    },
        +    "forms_truncated": {
        +      "default": 0,
        +      "description": "How many handles did NOT get an inline table because the per-search cap was reached. Refine the query or call get_inflections.",
        +      "title": "Forms Truncated",
        +      "type": "integer"
        +    },
        +    "found": {
        +      "description": "False when nothing matched.",
        +      "title": "Found",
        +      "type": "boolean"
        +    },
        +    "handles": {
        +      "items": {
        +        "$ref": "#/$defs/InflectionHandle"
        +      },
        +      "title": "Handles",
        +      "type": "array"
        +    },
        +    "language": {
        +      "$ref": "#/$defs/SearchLanguage"
        +    },
        +    "query": {
        +      "title": "Query",
        +      "type": "string"
        +    },
        +    "resolved_from": {
        +      "default": "",
        +      "description": "The original inflected query when search_method='lemma_index'; empty on a direct match.",
        +      "title": "Resolved From",
        +      "type": "string"
        +    },
        +    "resolved_lemma": {
        +      "default": "",
        +      "description": "The dictionary lemma actually searched when search_method='lemma_index'; empty on a direct match.",
        +      "title": "Resolved Lemma",
        +      "type": "string"
        +    },
        +    "search_method": {
        +      "default": "direct",
        +      "description": "How the match was found: 'direct' = the query itself matched; 'lemma_index' = the query was an inflected Livonian form, resolved to its dictionary lemma via the cached paradigm index and re-searched.",
        +      "enum": [
        +        "direct",
        +        "lemma_index"
        +      ],
        +      "title": "Search Method",
        +      "type": "string"
        +    },
        +    "source": {
        +      "default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Vāvere, Signis, Damberg, Pētõr, Kurpniece, Milda, Balodis, Uldis, Tuisk, Tuuli, Kūla, Gita, Tomingas, Marili, Soosaar Sven-Erik, Sedláčková, Anna & Jurgenovskis, Toms. 2024. Livonian lexicographic database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
        +      "title": "Source",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "query",
        +    "language",
        +    "found"
        +  ],
        +  "title": "SearchResult",
        +  "type": "object"
        +}
  6. 1 tool update
    • Changedsearch_livonian2 fields changed
      • changedInput schema / properties / max_forms / description
        Previous value: -"Optional override for how many inflection tables to expand this call (0–12). Raise it to pull more tables in ONE call on a broad query, or set a small value to keep a broad query cheap. Omit to use the server's default cap."New value: +"Optional override for how many inflection tables to expand this call (0–12). Raise it to pull more tables in ONE call on a broad query, or set a small value to keep a broad query cheap. On an uncached query each table is fetched sequentially with polite pacing toward the upstream, so a high value on a cold broad query is slow — the bound limits upstream fan-out, not just response size. Omit to use the server's default cap."
      • changedInput schema / properties / query / description
        Previous value: -"A SINGLE content word, not a phrase. Exactly one word per call — even with several candidates or synonyms in mind, search them one at a time ('see', then 'look'), never combined into one query like 'see look'. Drop function words and infinitive markers — search 'to water' as 'water', 'the sea' as 'sea'. The dictionary matches one attested headword, so a multi-word query often returns nothing even when the word exists; search the main word first, then refine. May be Livonian, Latvian, Estonian, or English (e.g. 'jarā', 'away', 'sea'). Matching is bidirectional."New value: +"A SINGLE content word, not a phrase. Exactly one word per call — even with several candidates or synonyms in mind, search them one at a time ('see', then 'look'), never combined into one query like 'see look'. Drop function words and infinitive markers — search 'to water' as 'water', 'the sea' as 'sea'. The dictionary matches one attested headword, so a multi-word query often returns nothing even when the word exists; search the main word first, then refine. May be Livonian, Latvian, Estonian, or English (e.g. 'jarā', 'away', 'sea'). Matching is bidirectional. An inflected Livonian form (search_language='liv') is resolved to its dictionary lemma automatically when the form is known — the result says so when that happened."
  7. 3 tool updates
    • Changedget_inflections2 fields changed
      • changedInput schema / properties / word_class / description
        Previous value: -"The word-class code from a search result's inflection handle (e.g. 's' = noun, 'vi' = intransitive verb, 'vt' = transitive verb)."New value: +"The word-class code from a search result's inflection handle (e.g. 's' = noun, 'adj' = adjective, 'vi' = intransitive verb, 'vt' = transitive verb)."
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_inflectionsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedromanize_livonian1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "romanize_livonianOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsearch_livonian5 fields changed
      • changedInput schema / properties / include_forms / description
        Previous value: -"When true (default), each match's full inflection table is returned INLINE — so you get usable cases/tenses in ONE call, no follow-up get_inflections needed. Bounded by a per-search cap; set false to get just the handles (faster for very broad queries)."New value: +"When true (default), each match's full inflection table is returned INLINE — usable cases/tenses in ONE call, no follow-up get_inflections. Set false to get just the headword handles + glosses: a cheap way to SCREEN several candidate words or synonyms (which exist? which sense?) before spending forms on the one you pick. Bounded by a per-search cap — use max_forms to raise or lower it for this call."
      • changedInput schema / properties / max_forms / anyOf
        Previous value: -[
        -  {
        -    "maximum": 50,
        -    "minimum": 0,
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 12,
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / max_forms / description
        Previous value: -"Optional cap on how many inflection tables to expand this call. Use a small value for broad queries (e.g. 'sea' matches many words); omit to use the server default."New value: +"Optional override for how many inflection tables to expand this call (0–12). Raise it to pull more tables in ONE call on a broad query, or set a small value to keep a broad query cheap. Omit to use the server's default cap."
      • changedInput schema / properties / query / description
        Previous value: -"The word or phrase to look up. May be Livonian, Latvian, Estonian, or English (e.g. 'jarā', 'away', 'sea'). Matching is bidirectional."New value: +"A SINGLE content word, not a phrase. Exactly one word per call — even with several candidates or synonyms in mind, search them one at a time ('see', then 'look'), never combined into one query like 'see look'. Drop function words and infinitive markers — search 'to water' as 'water', 'the sea' as 'sea'. The dictionary matches one attested headword, so a multi-word query often returns nothing even when the word exists; search the main word first, then refine. May be Livonian, Latvian, Estonian, or English (e.g. 'jarā', 'away', 'sea'). Matching is bidirectional."
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "search_livonianOutput",
        -  "type": "object"
        -}New value: +null
  8. 3 tool updates
    • Changedget_inflections5 fields changed
      • removedInput schema / $defs
        Removed value: -{
        -  "InflectionInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "vards_id": {
        -        "description": "The word id from a search result's inflection handle. Accepts a number or a digit-string (e.g. 17746 or \"17746\").",
        -        "pattern": "^\\d+$",
        -        "title": "Vards Id",
        -        "type": "string"
        -      },
        -      "word_class": {
        -        "description": "The word-class code from a search result's inflection handle (e.g. 's' = noun, 'vi' = intransitive verb, 'vt' = transitive verb).",
        -        "maxLength": 8,
        -        "minLength": 1,
        -        "pattern": "^[a-z]+$",
        -        "title": "Word Class",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "vards_id",
        -      "word_class"
        -    ],
        -    "title": "InflectionInput",
        -    "type": "object"
        -  }
        -}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/InflectionInput"
        -}
      • addedInput schema / properties / vards_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "The word id from a search result's inflection handle. Accepts a number or a digit-string (e.g. 17746 or \"17746\").",
        +  "title": "Vards Id"
        +}
      • addedInput schema / properties / word_class
        Added value: +{
        +  "description": "The word-class code from a search result's inflection handle (e.g. 's' = noun, 'vi' = intransitive verb, 'vt' = transitive verb).",
        +  "maxLength": 8,
        +  "minLength": 1,
        +  "pattern": "^[a-z]+$",
        +  "title": "Word Class",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "vards_id",
        +  "word_class"
        +]
    • Changedromanize_livonian4 fields changed
      • removedInput schema / $defs
        Removed value: -{
        -  "RomanizeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "text": {
        -        "description": "Livonian text to reduce to clean, pronounceable ASCII. Strips macrons, diacritics and capitals (ā→aa, š→sh, õ→u), softens a palatalized consonant (ņ ļ ŗ ţ ḑ) only before a vowel (ņ+a→nya, else ikšiggiņ→ikshiggin), and hyphenates the broken tone (si'zzõl→siz-zul) and long-vowel diphthong glides (kīen→kee-en). Pass a word, phrase, or several lines.",
        -        "maxLength": 4000,
        -        "minLength": 1,
        -        "title": "Text",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "text"
        -    ],
        -    "title": "RomanizeInput",
        -    "type": "object"
        -  }
        -}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/RomanizeInput"
        -}
      • addedInput schema / properties / text
        Added value: +{
        +  "description": "Livonian text to reduce to clean, pronounceable ASCII. Strips macrons, diacritics and capitals (ā→aa, š→sh, õ→u), softens a palatalized consonant (ņ ļ ŗ ţ ḑ) only before a vowel (ņ+a→nya, else ikšiggiņ→ikshiggin), and hyphenates the broken tone (si'zzõl→siz-zul) and long-vowel diphthong glides (kīen→kee-en). Pass a word, phrase, or several lines.",
        +  "maxLength": 4000,
        +  "minLength": 1,
        +  "title": "Text",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "text"
        +]
    • Changedsearch_livonian7 fields changed
      • removedInput schema / $defs / SearchInput
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "include_forms": {
        -      "default": true,
        -      "description": "When true (default), each match's full inflection table is returned INLINE — so you get usable cases/tenses in ONE call, no follow-up get_inflections needed. Bounded by a per-search cap; set false to get just the handles (faster for very broad queries).",
        -      "title": "Include Forms",
        -      "type": "boolean"
        -    },
        -    "max_forms": {
        -      "anyOf": [
        -        {
        -          "maximum": 50,
        -          "minimum": 0,
        -          "type": "integer"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "default": null,
        -      "description": "Optional cap on how many inflection tables to expand this call. Use a small value for broad queries (e.g. 'sea' matches many words); omit to use the server default.",
        -      "title": "Max Forms"
        -    },
        -    "query": {
        -      "description": "The word or phrase to look up. May be Livonian, Latvian, Estonian, or English (e.g. 'jarā', 'away', 'sea'). Matching is bidirectional.",
        -      "maxLength": 120,
        -      "minLength": 1,
        -      "title": "Query",
        -      "type": "string"
        -    },
        -    "search_language": {
        -      "$ref": "#/$defs/SearchLanguage",
        -      "default": "eng",
        -      "description": "Language your query word is in — selects which language the search matches against: 'eng' (default), 'liv', 'lat', or 'est'. For English→Livonian translation, keep 'eng'. Glosses are in English."
        -    }
        -  },
        -  "required": [
        -    "query"
        -  ],
        -  "title": "SearchInput",
        -  "type": "object"
        -}
      • addedInput schema / properties / include_forms
        Added value: +{
        +  "default": true,
        +  "description": "When true (default), each match's full inflection table is returned INLINE — so you get usable cases/tenses in ONE call, no follow-up get_inflections needed. Bounded by a per-search cap; set false to get just the handles (faster for very broad queries).",
        +  "title": "Include Forms",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / max_forms
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 50,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional cap on how many inflection tables to expand this call. Use a small value for broad queries (e.g. 'sea' matches many words); omit to use the server default.",
        +  "title": "Max Forms"
        +}
      • removedInput schema / properties / params
        Removed value: -{
        -  "$ref": "#/$defs/SearchInput"
        -}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "The word or phrase to look up. May be Livonian, Latvian, Estonian, or English (e.g. 'jarā', 'away', 'sea'). Matching is bidirectional.",
        +  "maxLength": 120,
        +  "minLength": 1,
        +  "title": "Query",
        +  "type": "string"
        +}
      • addedInput schema / properties / search_language
        Added value: +{
        +  "$ref": "#/$defs/SearchLanguage",
        +  "default": "eng",
        +  "description": "Language your query word is in — selects which language the search matches against: 'eng' (default), 'liv', 'lat', or 'est'. For English→Livonian translation, keep 'eng'. Glosses are in English."
        +}
      • changedInput schema / required
        Previous value: -[
        -  "params"
        -]New value: +[
        +  "query"
        +]
  9. 3 tool updates
    • First observedget_inflections
    • First observedromanize_livonian
    • First observedsearch_livonian

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources