Serveur MCP

hub

com.valksor/hub

Ce que fait ce MCP

Provides dictionary search, translation, transliteration, romanization, lemmatization, and inflection data for multiple historical and constructed languages.

anglo_deromanize
Find the Old English word(s) matching an ASCII spelling
Find the real Old English word(s) whose ASCII spelling matches this input — the inverse of `anglo_romanize`. romanize is deeply lossy (th←þ or ð, dropped macrons), so this is a LOOKUP against words already cached: attested spellings come back as source=dictionary. If none match, a single best-effort reconstruction (source=reconstruction, approximate=true) — a guess, not attested. Coverage grows as words are cached.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'anglo_deromanizeArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': 'ASCII-spelled Old English text to resolve back to real orthography. Returns the attested dictionary spelling(s) whose romanization matches (source=dictionary, exact) â\x80\x94 several may match one ambiguous key. On a miss, a single best-effort reconstruction (source=reconstruction, approximate=true), a guess: Old English romanization is deeply lossy (thâ\x86\x90þ or ð, dropped macrons/dots), so the dictionary hit is the reliable answer.'}}}
Schéma de sortie
{'type': 'object', '$defs': {'Candidate': {'type': 'object', 'title': 'Candidate', 'required': ['word', 'source'], 'properties': {'kind': {'anyOf': [{'enum': ['lemma', 'form'], 'type': 'string'}, {'type': 'null'}], 'title': 'Kind', 'default': None, 'description': 'For a lossy-family dictionary candidate, whether the word is a headword (lemma) or an inflected form. None for a reconstruction, and always None for Interslavic transliterate (which does not distinguish lemma from form).'}, 'word': {'type': 'string', 'title': 'Word', 'description': 'A real orthographic word (source=dictionary) or the best-effort reconstruction (source=reconstruction).'}, 'source': {'enum': ['dictionary', 'reconstruction'], 'type': 'string', 'title': 'Source', 'description': 'dictionary = an ATTESTED spelling recalled from the dictionary index (exact, no guessing); reconstruction = a best-effort algorithmic guess, returned only when no attested word matched (never emitted by Interslavic transliterate, which returns empty on a miss instead).'}}, 'description': 'One candidate spelling from a reverse-lookup surface (deromanize /\ndetransliterate, or Interslavic transliterate).'}}, 'title': 'DeromanizedText', 'required': ['candidates', 'approximate'], 'properties': {'candidates': {'type': 'array', 'items': {'$ref': '#/$defs/Candidate'}, 'title': 'Candidates'}, 'approximate': {'type': 'boolean', 'title': 'Approximate'}}, 'description': "The MCP-facing payload: candidates only. ``original`` is deliberately absent â\x80\x94\nthe MCP result reaches an LLM's context, so the raw caller text must not be echoed\n(mirrors ``RomanizedText``/``TransliteratedText``)."}
anglo_get_inflections
Get an Old English inflection table
Fetch the full declension (nominals, including the pronouns' dual) or conjugation (verbs) table for a lemma identified by a search result's inflection handle (entry_id + word_class). Use this only when a search ran without inline forms or left a match un-expanded — a default search already returns each match's table inline. Returns Markdown plus the table as structuredContent with the shape {"result": <paradigm>} per the declared outputSchema — switch on result.category ('nominal' | 'verbal' | 'not_found') before reading the body. Content from en.wiktionary.org (CC BY-SA 4.0).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'anglo_get_inflectionsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'maxLength': 80, 'minLength': 1, 'description': "The Wiktionary page title (the lemma) from a search result's inflection handle, e.g. 'cyning', 'bindan'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z ]+$', 'maxLength': 24, 'minLength': 1, 'description': "The part-of-speech section from a search result's inflection handle, e.g. 'verb', 'noun', 'adjective', 'pronoun'."}}}
Schéma de sortie
{'type': 'object', '$defs': {'AngloNumberForms': {'type': 'object', 'title': 'AngloNumberForms', 'properties': {'dual': {'type': 'string', 'title': 'Dual', 'default': ''}, 'plural': {'type': 'string', 'title': 'Plural', 'default': ''}, 'singular': {'type': 'string', 'title': 'Singular', 'default': ''}}, 'description': "A declension cell: the number forms of one case key. Forms are verbatim\nnormalized Old English; alternates stay comma-separated as Wiktionary renders\nthem. A number the table doesn't give is an empty string â\x80\x94 ``dual`` is filled\nonly by the personal-pronoun paradigm (nouns and adjectives have no dual)."}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old English entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Old English section, no table, or\nthe page doesn't exist). ``found`` is False and there is no body."}, 'AngloVerbalParadigm': {'type': 'object', 'title': 'AngloVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Mood and tense (lower-case: 'indicative present', 'subjunctive past'; the imperative has no tense â\x80\x94 its key is just 'imperative') â\x86\x92 person and number ('first singular' â\x80¦ 'third singular', and the bare 'singular'/'plural' the subjunctive and imperative use) â\x86\x92 the form. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old English entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite form ('infinitive', 'inflected infinitive', 'present participle', 'past participle') â\x86\x92 {'form': <the form>}.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Conjugation of a verb, grouped the way Wiktionary's tables are: finite cells\nkeyed by mood and tense â\x86\x92 person-and-number â\x86\x92 form, plus the non-finite forms\n(the two infinitives and the participles). Old English verbs are active only â\x80\x94\nthere is no mediopassive voice â\x80\x94 so all finite keys are bare."}, 'AngloNominalParadigm': {'type': 'object', 'title': 'AngloNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key (lower-case: 'nominative', 'genitive', 'instrumental', â\x80¦) â\x86\x92 its singular/dual/plural forms, in table order. Adjectives prefix the declension class and suffix the gender ('strong nominative feminine'); pronouns prefix the person and, in the third person, the gender ('first person nominative', 'third person masculine accusative'). ``dual`` is populated only on pronoun cells.", 'additionalProperties': {'$ref': '#/$defs/AngloNumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old English entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Declension of a noun/adjective/pronoun: case key â\x86\x92 {singular, dual, plural}.\n\nNoun tables are plain: the bare case is the key ('nominative', 'genitive',\n'instrumental'). Adjective tables split by gender (suffixed: 'nominative\nfeminine') and come one per declension class (strong/weak), folded in as a\ntitle-derived prefix: 'strong nominative feminine', 'weak dative neuter'.\nThe personal-pronoun table splits by person (and, in the third person, gender)\nand carries the dual: 'first person nominative' â\x86\x92 {singular, dual, plural},\n'third person masculine accusative' â\x86\x92 {singular, â\x80¦, plural}. ``category``\ndiscriminates this from the verbal and not-found shapes â\x80\x94 switch on it before\nreading the body."}}, 'title': 'anglo_get_inflectionsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/AngloNominalParadigm'}, {'$ref': '#/$defs/AngloVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'verbal': '#/$defs/AngloVerbalParadigm', 'nominal': '#/$defs/AngloNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}}}
anglo_romanize
Romanize Old English to clean ASCII
Reduce Old English orthography to its primary ASCII spelling (þing→thing, wæter→waeter; macrons and the dotted ġ/ċ dropped) for an ASCII-keyboard downstream. Pure local transform: no dictionary lookup, no network, always ASCII.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'anglo_romanizeArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': 'Old English text to reduce to its primary ASCII spelling. Drops macrons and the dotted Ä¡/Ä\x8b, and folds the special letters (þ/ðâ\x86\x92th, æâ\x86\x92ae, Æ¿â\x86\x92w, Å\x93â\x86\x92oe): þingâ\x86\x92thing, wæterâ\x86\x92waeter. For an ASCII-keyboard downstream. Pass a word, phrase, or several lines.'}}}
Schéma de sortie
{'type': 'object', 'title': 'RomanizedText', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'description': 'The primary ASCII spelling.'}}, 'description': "The MCP-facing romanization payload: the ASCII output only. ``original`` is\ndeliberately absent â\x80\x94 the MCP result reaches an LLM's context, so the raw caller\ntext must not be echoed (mirrors the sibling languages)."}
anglo_search
Look an Old English word up
Look an Old English word up on Wiktionary and return its senses plus full declension/conjugation tables — attested content, not invented. Any form of the word works; an inflected query is resolved to its lemma automatically via previously cached paradigms and the result notes the resolution. With search_language='eng' the query is a modern English word instead: the result lists its per-sense Old English equivalents (the translations block) plus their expanded entries. Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Results are cached server-side; first-time queries reach the live upstream politely and calls are rate limited — on a rate-limit error, wait a few seconds and retry. Content is from en.wiktionary.org (CC BY-SA 4.0 — attribute and share alike if republished).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['ang', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``ang`` looks an Old English word up directly (any of\nits forms â\x80\x94 an inflected query resolves via cached paradigms). ``eng`` searches\nin reverse: the English Wiktionary page for the query word lists per-sense Old\nEnglish translations, and each distinct lemma is then looked up normally.'}}, 'title': 'anglo_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 80, 'minLength': 1, 'description': "The word to look up, in the language search_language names. Old English (default): a SINGLE Old English word, any form â\x80\x94 an inflected form ('bindaþ') is resolved to its lemma ('bindan') automatically via cached paradigms, and the result says so; the special letters are optional once a paradigm is cached ('thing' finds þing, 'waeter' finds wæter). English (search_language='eng'): the English word whose Old English equivalents you want â\x80\x94 multiword entries like 'apple tree' work."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': 'Optional override for how many inflection tables to expand this call (0â\x80\x9312). On an uncached query each table is one politely paced upstream fetch, so high values on cold queries are slow. Omit for the server default.'}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full declension/conjugation table is returned INLINE â\x80\x94 usable cases/tenses (nouns, the adjectives' strong/weak family, the verbs' moods, the pronouns' dual) in ONE call, no follow-up anglo_get_inflections. Set false for a cheap screen of which entries exist. Bounded by a per-search cap â\x80\x94 use max_forms to adjust per call. For eng queries this governs the expanded Old English entries; the per-sense translations list itself is always returned."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'ang', 'description': "Language the query word is in: 'ang' (default) looks the Old English word up directly; 'eng' finds the Old English equivalents of a modern English word (per-sense, from Wiktionary's translation tables) and returns their full entries. Glosses are in modern English either way."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'senses': {'type': 'array', 'items': {'$ref': '#/$defs/Sense'}, 'title': 'Senses'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Page title â\x80\x94 feed to anglo_get_inflections.'}, 'headword': {'type': 'string', 'title': 'Headword'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': 'POS section â\x80\x94 feed to anglo_get_inflections.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': ''}}, 'description': "One Old English entry on the page: the headword (page title) with one\npart-of-speech section's senses."}, 'Sense': {'type': 'object', 'title': 'Sense', 'required': ['gloss'], 'properties': {'gloss': {'type': 'string', 'title': 'Gloss'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Examples'}}, 'description': 'One sense of an entry: the (HTML-stripped) Wiktionary definition line.'}, 'SearchLanguage': {'enum': ['ang', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``ang`` looks an Old English word up directly (any of\nits forms â\x80\x94 an inflected query resolves via cached paradigms). ``eng`` searches\nin reverse: the English Wiktionary page for the query word lists per-sense Old\nEnglish translations, and each distinct lemma is then looked up normally.'}, 'TranslationTerm': {'type': 'object', 'title': 'TranslationTerm', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'description': 'Wiktionary page title â\x80\x94 the lemma itself.'}, 'gender': {'type': 'string', 'title': 'Gender', 'default': '', 'description': "Grammatical gender as marked, e.g. 'n'."}, 'display': {'type': 'string', 'title': 'Display', 'default': '', 'description': 'Rendered form when it differs from the title.'}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "Usage qualifier as marked, e.g. 'poetic'; else empty."}}, 'description': 'One Old English word a translations table offers for an English sense.\n``word`` is the Wiktionary page title (what an ``eng`` search re-searches and\nwhat ``anglo_get_inflections`` needs).'}, 'AngloNumberForms': {'type': 'object', 'title': 'AngloNumberForms', 'properties': {'dual': {'type': 'string', 'title': 'Dual', 'default': ''}, 'plural': {'type': 'string', 'title': 'Plural', 'default': ''}, 'singular': {'type': 'string', 'title': 'Singular', 'default': ''}}, 'description': "A declension cell: the number forms of one case key. Forms are verbatim\nnormalized Old English; alternates stay comma-separated as Wiktionary renders\nthem. A number the table doesn't give is an empty string â\x80\x94 ``dual`` is filled\nonly by the personal-pronoun paradigm (nouns and adjectives have no dual)."}, 'InflectionHandle': {'type': 'object', 'title': 'InflectionHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/AngloNominalParadigm'}, {'$ref': '#/$defs/AngloVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'discriminator': {'mapping': {'verbal': '#/$defs/AngloVerbalParadigm', 'nominal': '#/$defs/AngloNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, 'description': 'The full paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap.'}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'Nearby headword / hint.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'Wiktionary page title â\x80\x94 the lemma itself.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': 'Part-of-speech hint.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Part-of-speech section, e.g. 'verb', 'noun'."}}, 'description': 'A structured anchor for fetching a full paradigm: feed ``entry_id`` (the page\ntitle) + ``word_class`` (the POS section) to ``anglo_get_inflections`` â\x80\x94 or ask\n``search`` to include the table inline (``forms``).'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old English entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Old English section, no table, or\nthe page doesn't exist). ``found`` is False and there is no body."}, 'TranslationSense': {'type': 'object', 'title': 'TranslationSense', 'required': ['sense'], 'properties': {'sense': {'type': 'string', 'title': 'Sense', 'description': 'The sense gloss the source table carries.'}, 'terms': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationTerm'}, 'title': 'Terms'}}, 'description': 'One English sense (a translations table) and the Old English terms it offers.'}, 'AngloVerbalParadigm': {'type': 'object', 'title': 'AngloVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Mood and tense (lower-case: 'indicative present', 'subjunctive past'; the imperative has no tense â\x80\x94 its key is just 'imperative') â\x86\x92 person and number ('first singular' â\x80¦ 'third singular', and the bare 'singular'/'plural' the subjunctive and imperative use) â\x86\x92 the form. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old English entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite form ('infinitive', 'inflected infinitive', 'present participle', 'past participle') â\x86\x92 {'form': <the form>}.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Conjugation of a verb, grouped the way Wiktionary's tables are: finite cells\nkeyed by mood and tense â\x86\x92 person-and-number â\x86\x92 form, plus the non-finite forms\n(the two infinitives and the participles). Old English verbs are active only â\x80\x94\nthere is no mediopassive voice â\x80\x94 so all finite keys are bare."}, 'AngloNominalParadigm': {'type': 'object', 'title': 'AngloNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key (lower-case: 'nominative', 'genitive', 'instrumental', â\x80¦) â\x86\x92 its singular/dual/plural forms, in table order. Adjectives prefix the declension class and suffix the gender ('strong nominative feminine'); pronouns prefix the person and, in the third person, the gender ('first person nominative', 'third person masculine accusative'). ``dual`` is populated only on pronoun cells.", 'additionalProperties': {'$ref': '#/$defs/AngloNumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old English entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Declension of a noun/adjective/pronoun: case key â\x86\x92 {singular, dual, plural}.\n\nNoun tables are plain: the bare case is the key ('nominative', 'genitive',\n'instrumental'). Adjective tables split by gender (suffixed: 'nominative\nfeminine') and come one per declension class (strong/weak), folded in as a\ntitle-derived prefix: 'strong nominative feminine', 'weak dative neuter'.\nThe personal-pronoun table splits by person (and, in the third person, gender)\nand carries the dual: 'first person nominative' â\x86\x92 {singular, dual, plural},\n'third person masculine accusative' â\x86\x92 {singular, â\x80¦, plural}. ``category``\ndiscriminates this from the verbal and not-found shapes â\x80\x94 switch on it before\nreading the body."}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched. For an eng query, True means Old English translations were found â\x80\x94 entries may still be empty when none of them could be expanded (see translations).'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old English entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/InflectionHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'translations': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationSense'}, 'title': 'Translations', 'description': 'Populated only for eng queries (always [] for ang): the Old English terms each English sense translates to, in sense order. Entries/handles below are the expanded dictionary entries of those terms.'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': 'The original inflected query when resolved; else empty. ang queries only â\x80\x94 always empty for eng results.'}, 'search_method': {'enum': ['direct', 'lemma_index', 'translations'], 'type': 'string', 'title': 'Search Method', 'default': 'direct', 'description': "How the match was found: 'direct' = the query itself matched; 'lemma_index' = an inflected form resolved via a previously cached paradigm; 'translations' = an English query resolved via Wiktionary translation tables."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': 'The lemma actually searched when resolved; else empty. ang queries only â\x80\x94 always empty for eng results.'}, 'forms_truncated': {'type': 'integer', 'title': 'Forms Truncated', 'default': 0, 'description': 'How many handles did NOT get an inline table because the per-search cap was reached.'}, 'translations_truncated': {'type': 'integer', 'title': 'Translations Truncated', 'default': 0, 'description': 'How many distinct translated lemmas were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).'}}, 'description': 'The result of a dictionary search.'}
dictionaries
Index of every Valksor dictionary reachable through this hub and its CURRENT tool and prompt names (each named <language>_<verb>). Call this to discover or re-check names — e.g. after an 'unknown tool'/'unknown prompt' error. The optional `language` argument narrows the result to one dictionary by its id (the prefix before the first underscore). Each entry's `host` is that dictionary's public site, for reference only — you still reach its tools through this hub by their listed names, not via that host.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {'language': {'enum': ['livonian', 'latin', 'slavonic', 'scythian', 'norse', 'latgalian', 'anglo', 'interslavic'], 'type': 'string', 'description': 'Restrict the index to one dictionary by its id.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['dictionaries'], 'properties': {'dictionaries': {'type': 'array', 'items': {'type': 'object', 'required': ['language', 'host', 'tools', 'prompts'], 'properties': {'host': {'type': 'string'}, 'tools': {'type': 'array', 'items': {'type': 'string'}}, 'prompts': {'type': 'array', 'items': {'type': 'string'}}, 'language': {'type': 'string'}}}}}}
interslavic_get_inflections
Get an Interslavic inflection table
Fetch the full declension (noun/adjective) or conjugation (verb) table for a word identified by a search result's inflection handle (entry_id + word_class). Use this only when a search ran without inline forms or left a match un-expanded — a default search already returns each match's table inline. Returns Markdown plus the table as structuredContent with the shape {"result": <paradigm>} — switch on result.category ('noun' | 'adjective' | 'verb' | 'not_found') before reading the body. Tables are generated by the official Interslavic morphology engine, not attested.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'interslavic_get_inflectionsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'pattern': '^[0-9]{1,24}$', 'description': "The dictionary word id from a search result's inflection handle (a number, e.g. '33555') â\x80\x94 NOT the headword itself (Interslavic homographs share a spelling)."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z ]+$', 'maxLength': 24, 'minLength': 1, 'description': "The paradigm class from a search result's inflection handle: 'noun', 'adjective' or 'verb'."}}}
Schéma de sortie
{'type': 'object', '$defs': {'NounParadigm': {'type': 'object', 'title': 'NounParadigm', 'required': ['entry_id', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key ('nom','acc','gen','loc','dat','ins','voc') â\x86\x92 [singular, plural], in table order.", 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'category': {'type': 'string', 'const': 'noun', 'title': 'Category', 'default': 'noun'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The dictionary word id (NOT the headword).'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': 'noun', 'description': "The paradigm class: 'noun'."}}, 'description': "Declension of a noun: case key â\x86\x92 [singular, plural]. Interslavic has one\nnumber split (sg/pl) across seven cases. A cell may hold ' / '-separated\nalternates exactly as the reference engine renders them; a number the paradigm\ndoesn't fill is an empty string. ``category`` discriminates the ``Forms`` union â\x80\x94\nswitch on it before reading the body."}, 'VerbParadigm': {'type': 'object', 'title': 'VerbParadigm', 'required': ['entry_id'], 'properties': {'pfap': {'type': 'string', 'title': 'Pfap', 'default': '', 'description': 'Past active participle (perfective).'}, 'pfpp': {'type': 'string', 'title': 'Pfpp', 'default': '', 'description': 'Past passive participle.'}, 'prap': {'type': 'string', 'title': 'Prap', 'default': '', 'description': 'Present active participle (imperfective).'}, 'prpp': {'type': 'string', 'title': 'Prpp', 'default': '', 'description': 'Present passive participle (uncommon).'}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'future': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Future'}, 'gerund': {'type': 'string', 'title': 'Gerund', 'default': '', 'description': 'Verbal noun.'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'perfect': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Perfect'}, 'present': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Present'}, 'category': {'type': 'string', 'const': 'verb', 'title': 'Category', 'default': 'verb'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The dictionary word id (NOT the headword).'}, 'imperfect': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Imperfect'}, 'imperative': {'type': 'string', 'title': 'Imperative', 'default': ''}, 'infinitive': {'type': 'string', 'title': 'Infinitive', 'default': ''}, 'pluperfect': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Pluperfect'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': 'verb', 'description': "The paradigm class: 'verb'."}, 'conditional': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Conditional'}}, 'description': 'Conjugation of a verb: the finite tense/mood series (each a positional list of\nperson forms â\x80\x94 see the grammar-labels resource for the person order per series),\nthe imperative, the participles (present/past Ã\x97 active/passive, present only when\nthe aspect licenses them) and the verbal noun (gerund). Alternates are\ncomma-separated as the reference engine renders them.'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'No inflection table for this word/class: an indeclinable (adverb, preposition,\nconjunction, â\x80¦), a multiword lemma, or a pronoun/numeral (closed sets carry no\ngenerated table in v1). ``found`` is False and there is no body.'}, 'AdjectiveParadigm': {'type': 'object', 'title': 'AdjectiveParadigm', 'required': ['entry_id', 'singular', 'plural'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'short': {'type': 'string', 'title': 'Short', 'default': '', 'description': 'The short (predicative) form; may be empty.'}, 'plural': {'type': 'object', 'title': 'Plural', 'description': 'Case key â\x86\x92 gender forms, plural.', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'category': {'type': 'string', 'const': 'adjective', 'title': 'Category', 'default': 'adjective'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The dictionary word id (NOT the headword).'}, 'singular': {'type': 'object', 'title': 'Singular', 'description': 'Case key â\x86\x92 gender forms, singular.', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'comparison': {'type': 'object', 'title': 'Comparison', 'description': "Degree ('positive','comparative','superlative') â\x86\x92 forms.", 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': 'adjective', 'description': "The paradigm class: 'adjective'."}}, 'description': 'Declension of an adjective: singular and plural case tables (each case key â\x86\x92\nthe gender forms the engine renders, [masculine, neuter, feminine] where the case\ndistinguishes all three, fewer where it collapses them), the ``short`` form, and\nthe ``comparison`` degrees (positive/comparative/superlative).'}}, 'title': 'interslavic_get_inflectionsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/NounParadigm'}, {'$ref': '#/$defs/AdjectiveParadigm'}, {'$ref': '#/$defs/VerbParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'noun': '#/$defs/NounParadigm', 'verb': '#/$defs/VerbParadigm', 'adjective': '#/$defs/AdjectiveParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}}}
interslavic_search
Look an Interslavic word up
Look an Interslavic word up in the bundled community dictionary and return its translation matrix (English + 11 Slavic languages) plus its full, algorithmically-generated declension/conjugation table. Any form and either script works; an inflected query resolves to its headword and the result notes it. With search_language='eng' the query is an English word: the result lists its Interslavic equivalents plus their expanded entries. Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Fully offline (bundled snapshot); calls are rate limited per client IP. Content: the Interslavic dictionary (van Steenbergen et al.); reuse licence unconfirmed — attribute the source.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['isv', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': "The query language. ``isv`` looks an Interslavic word up directly â\x80\x94 any of its\ninflected forms resolves to the headword via the bundled reverse form index, and\na Latin or Cyrillic spelling both work. ``eng`` searches in reverse: the English\nquery is matched against the entries' English glosses and each matched Interslavic\nlemma is then looked up normally. The dictionary translates into 11 more Slavic\nlanguages, but only isv and eng are QUERYABLE in v1 â\x80\x94 the other columns are\nread-only (returned in each entry's translation matrix)."}}, 'title': 'interslavic_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 80, 'minLength': 1, 'description': "The word to look up, in the language search_language names. Interslavic (default): a SINGLE Interslavic word, any form and either script â\x80\x94 an inflected form ('brata') resolves to its headword ('brat') via the reverse form index, Latin and Cyrillic both work for headwords, and diacritics are optional ('delati' finds 'dÄ\x9blati'). English (search_language='eng'): the English word whose Interslavic equivalents you want."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': 'Optional override for how many inflection tables to expand this call (0â\x80\x9312). Tables are served from the bundled dataset (no network), so this is cheap. Omit for the server default.'}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full declension/conjugation table is returned INLINE â\x80\x94 usable cases/tenses in ONE call, no follow-up interslavic_get_inflections. Set false for a cheap screen of which entries exist. Bounded by a per-search cap â\x80\x94 use max_forms to adjust per call. Pronouns, numerals and indeclinables carry no table. For eng queries this governs the expanded Interslavic entries."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'isv', 'description': "Language the query is in: 'isv' (default) looks the Interslavic word up directly; 'eng' finds the Interslavic equivalents of an English word (via the gloss index) and returns their full entries. These are the only two queryable languages in v1 â\x80\x94 each entry ALSO carries a read-only translation matrix into 11 more languages (Russian, Polish, Czech, Ukrainian, â\x80¦), but you cannot query IN those."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Word id â\x80\x94 feed to interslavic_get_inflections.'}, 'headword': {'type': 'string', 'title': 'Headword', 'description': 'The Interslavic headword, Latin script.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': "Paradigm class ('noun'/'adjective'/'verb') or '' if none."}, 'translations': {'$ref': '#/$defs/TranslationMatrix'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': '', 'description': "Raw POS tag, e.g. 'm.anim.', 'v.tr.'."}, 'intelligibility': {'type': 'string', 'title': 'Intelligibility', 'default': '', 'description': 'Per-language intelligibility flags as the source marks them.'}, 'headword_cyrillic': {'type': 'string', 'title': 'Headword Cyrillic', 'default': '', 'description': 'The headword in Cyrillic.'}}, 'description': "One Interslavic dictionary entry: the headword (in both scripts), its part of\nspeech, and its translation matrix â\x80\x94 the entry's content. ``word_class`` is the\nparadigm class ('noun'/'adjective'/'verb') or '' when the word has no generated\ntable; feed ``entry_id`` + ``word_class`` to ``interslavic_get_inflections``."}, 'NounParadigm': {'type': 'object', 'title': 'NounParadigm', 'required': ['entry_id', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key ('nom','acc','gen','loc','dat','ins','voc') â\x86\x92 [singular, plural], in table order.", 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'category': {'type': 'string', 'const': 'noun', 'title': 'Category', 'default': 'noun'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The dictionary word id (NOT the headword).'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': 'noun', 'description': "The paradigm class: 'noun'."}}, 'description': "Declension of a noun: case key â\x86\x92 [singular, plural]. Interslavic has one\nnumber split (sg/pl) across seven cases. A cell may hold ' / '-separated\nalternates exactly as the reference engine renders them; a number the paradigm\ndoesn't fill is an empty string. ``category`` discriminates the ``Forms`` union â\x80\x94\nswitch on it before reading the body."}, 'VerbParadigm': {'type': 'object', 'title': 'VerbParadigm', 'required': ['entry_id'], 'properties': {'pfap': {'type': 'string', 'title': 'Pfap', 'default': '', 'description': 'Past active participle (perfective).'}, 'pfpp': {'type': 'string', 'title': 'Pfpp', 'default': '', 'description': 'Past passive participle.'}, 'prap': {'type': 'string', 'title': 'Prap', 'default': '', 'description': 'Present active participle (imperfective).'}, 'prpp': {'type': 'string', 'title': 'Prpp', 'default': '', 'description': 'Present passive participle (uncommon).'}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'future': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Future'}, 'gerund': {'type': 'string', 'title': 'Gerund', 'default': '', 'description': 'Verbal noun.'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'perfect': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Perfect'}, 'present': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Present'}, 'category': {'type': 'string', 'const': 'verb', 'title': 'Category', 'default': 'verb'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The dictionary word id (NOT the headword).'}, 'imperfect': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Imperfect'}, 'imperative': {'type': 'string', 'title': 'Imperative', 'default': ''}, 'infinitive': {'type': 'string', 'title': 'Infinitive', 'default': ''}, 'pluperfect': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Pluperfect'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': 'verb', 'description': "The paradigm class: 'verb'."}, 'conditional': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Conditional'}}, 'description': 'Conjugation of a verb: the finite tense/mood series (each a positional list of\nperson forms â\x80\x94 see the grammar-labels resource for the person order per series),\nthe imperative, the participles (present/past Ã\x97 active/passive, present only when\nthe aspect licenses them) and the verbal noun (gerund). Alternates are\ncomma-separated as the reference engine renders them.'}, 'SearchLanguage': {'enum': ['isv', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': "The query language. ``isv`` looks an Interslavic word up directly â\x80\x94 any of its\ninflected forms resolves to the headword via the bundled reverse form index, and\na Latin or Cyrillic spelling both work. ``eng`` searches in reverse: the English\nquery is matched against the entries' English glosses and each matched Interslavic\nlemma is then looked up normally. The dictionary translates into 11 more Slavic\nlanguages, but only isv and eng are QUERYABLE in v1 â\x80\x94 the other columns are\nread-only (returned in each entry's translation matrix)."}, 'TranslationTerm': {'type': 'object', 'title': 'TranslationTerm', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'description': 'The Interslavic headword, Latin script.'}, 'word_cyrillic': {'type': 'string', 'title': 'Word Cyrillic', 'default': '', 'description': 'The headword in Cyrillic.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': '', 'description': 'Raw POS tag.'}}, 'description': "One Interslavic word an English query's gloss match offers. ``word`` is the\nheadword (what an ``eng`` search re-searches and what a handle needs)."}, 'InflectionHandle': {'type': 'object', 'title': 'InflectionHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/NounParadigm'}, {'$ref': '#/$defs/AdjectiveParadigm'}, {'$ref': '#/$defs/VerbParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'discriminator': {'mapping': {'noun': '#/$defs/NounParadigm', 'verb': '#/$defs/VerbParadigm', 'adjective': '#/$defs/AdjectiveParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, 'description': 'The full paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap.'}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'The headword, for display.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The dictionary word id â\x80\x94 NOT the headword.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': "Raw part-of-speech tag, e.g. 'm.anim.'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Paradigm class: 'noun', 'adjective' or 'verb'."}}, 'description': 'A structured anchor for fetching a full paradigm: feed ``entry_id`` (the word\nid) + ``word_class`` (the paradigm class) to ``interslavic_get_inflections`` â\x80\x94 or\nask ``search`` to include the table inline (``forms``).'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'No inflection table for this word/class: an indeclinable (adverb, preposition,\nconjunction, â\x80¦), a multiword lemma, or a pronoun/numeral (closed sets carry no\ngenerated table in v1). ``found`` is False and there is no body.'}, 'TranslationSense': {'type': 'object', 'title': 'TranslationSense', 'required': ['sense'], 'properties': {'sense': {'type': 'string', 'title': 'Sense', 'description': 'The matched English query.'}, 'terms': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationTerm'}, 'title': 'Terms'}}, 'description': "One English query and the Interslavic words whose English gloss matched it.\nMatching is by the local gloss index (built from every entry's English column);\nthe single sense carries the query itself."}, 'AdjectiveParadigm': {'type': 'object', 'title': 'AdjectiveParadigm', 'required': ['entry_id', 'singular', 'plural'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'short': {'type': 'string', 'title': 'Short', 'default': '', 'description': 'The short (predicative) form; may be empty.'}, 'plural': {'type': 'object', 'title': 'Plural', 'description': 'Case key â\x86\x92 gender forms, plural.', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'category': {'type': 'string', 'const': 'adjective', 'title': 'Category', 'default': 'adjective'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The dictionary word id (NOT the headword).'}, 'singular': {'type': 'object', 'title': 'Singular', 'description': 'Case key â\x86\x92 gender forms, singular.', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'comparison': {'type': 'object', 'title': 'Comparison', 'description': "Degree ('positive','comparative','superlative') â\x86\x92 forms.", 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': 'adjective', 'description': "The paradigm class: 'adjective'."}}, 'description': 'Declension of an adjective: singular and plural case tables (each case key â\x86\x92\nthe gender forms the engine renders, [masculine, neuter, feminine] where the case\ndistinguishes all three, fewer where it collapses them), the ``short`` form, and\nthe ``comparison`` degrees (positive/comparative/superlative).'}, 'TranslationMatrix': {'type': 'object', 'title': 'TranslationMatrix', 'properties': {'be': {'type': 'string', 'title': 'Be', 'default': ''}, 'bg': {'type': 'string', 'title': 'Bg', 'default': ''}, 'cs': {'type': 'string', 'title': 'Cs', 'default': ''}, 'en': {'type': 'string', 'title': 'En', 'default': ''}, 'hr': {'type': 'string', 'title': 'Hr', 'default': ''}, 'mk': {'type': 'string', 'title': 'Mk', 'default': ''}, 'pl': {'type': 'string', 'title': 'Pl', 'default': ''}, 'ru': {'type': 'string', 'title': 'Ru', 'default': ''}, 'sk': {'type': 'string', 'title': 'Sk', 'default': ''}, 'sl': {'type': 'string', 'title': 'Sl', 'default': ''}, 'sr': {'type': 'string', 'title': 'Sr', 'default': ''}, 'uk': {'type': 'string', 'title': 'Uk', 'default': ''}}, 'description': "One entry's translations into the dictionary's target languages (isv â\x86\x92 â\x80¦).\nAn absent translation is an empty string. English (``en``) is also the reverse\nsearch key; the Slavic columns are read-only in v1. This IS the entry's content â\x80\x94\nInterslavic is a bridge language, so the multilingual equivalents are the point."}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched. For an eng query, True means the gloss index named Interslavic words â\x80\x94 entries may still be empty when none of them expanded (see translations).'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Interslavic dictionary (Medžuslovjansky slovnik), J. van Steenbergen et al. â\x80\x94 steen.free.fr / medzuslovjansky (interslavic-dictionary.com). Morphology by @interslavic/utils. Reuse licence unconfirmed; reused here with attribution.'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/InflectionHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'translations': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationSense'}, 'title': 'Translations', 'description': 'Populated only for eng queries (always [] for isv): the Interslavic words whose English gloss matched the query. Entries/handles below are the expanded entries of those words.'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': 'The original query when resolved via the index; else empty. isv queries only â\x80\x94 always empty for eng results.'}, 'search_method': {'enum': ['direct', 'lemma_index', 'translations'], 'type': 'string', 'title': 'Search Method', 'default': 'direct', 'description': "How the match was found: 'direct' = the query matched a headword; 'lemma_index' = an inflected/alternate spelling resolved via the reverse form index; 'translations' = an English query resolved via the gloss index."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': 'The headword actually searched when resolved; else empty. isv queries only â\x80\x94 always empty for eng results.'}, 'forms_truncated': {'type': 'integer', 'title': 'Forms Truncated', 'default': 0, 'description': 'How many handles did NOT get an inline table because the per-search cap was reached.'}, 'translations_truncated': {'type': 'integer', 'title': 'Translations Truncated', 'default': 0, 'description': 'How many distinct matched words were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).'}}, 'description': 'The result of a dictionary search.'}
interslavic_transliterate
Transliterate one Interslavic word between Latin and Cyrillic
Transliterate ONE Interslavic word between Latin and Cyrillic. This is bidirectional: it auto-detects the input's script and returns the attested spelling in the OTHER script — Latin input yields Cyrillic, Cyrillic input yields Latin (or pass `target` to force it). Unlike the lossy deromanize tools, this is an EXACT dataset lookup (both spellings are stored per entry): it never guesses — a word not in the dataset returns empty candidates.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'interslavic_transliterateArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': 'ONE Interslavic word (not a phrase â\x80\x94 the lookup does not tokenize). Auto-detects the script and returns the attested spelling in the OTHER script (Latinâ\x86\x94Cyrillic). A word absent from the dataset, or input with no clear script, returns empty candidates â\x80\x94 this is an exact lookup and never guesses.'}, 'target': {'anyOf': [{'enum': ['cyrillic', 'latin'], 'type': 'string'}, {'type': 'null'}], 'title': 'Target', 'default': None, 'description': 'Force the output script (cyrillic|latin); omit to auto-detect.'}}}
Schéma de sortie
{'type': 'object', '$defs': {'Candidate': {'type': 'object', 'title': 'Candidate', 'required': ['word', 'source'], 'properties': {'kind': {'anyOf': [{'enum': ['lemma', 'form'], 'type': 'string'}, {'type': 'null'}], 'title': 'Kind', 'default': None, 'description': 'For a lossy-family dictionary candidate, whether the word is a headword (lemma) or an inflected form. None for a reconstruction, and always None for Interslavic transliterate (which does not distinguish lemma from form).'}, 'word': {'type': 'string', 'title': 'Word', 'description': 'A real orthographic word (source=dictionary) or the best-effort reconstruction (source=reconstruction).'}, 'source': {'enum': ['dictionary', 'reconstruction'], 'type': 'string', 'title': 'Source', 'description': 'dictionary = an ATTESTED spelling recalled from the dictionary index (exact, no guessing); reconstruction = a best-effort algorithmic guess, returned only when no attested word matched (never emitted by Interslavic transliterate, which returns empty on a miss instead).'}}, 'description': 'One candidate spelling from a reverse-lookup surface (deromanize /\ndetransliterate, or Interslavic transliterate).'}}, 'title': 'TransliteratedText', 'required': ['candidates', 'direction'], 'properties': {'direction': {'enum': ['latin_to_cyrillic', 'cyrillic_to_latin', 'unknown'], 'type': 'string', 'title': 'Direction'}, 'candidates': {'type': 'array', 'items': {'$ref': '#/$defs/Candidate'}, 'title': 'Candidates'}}, 'description': "The MCP-facing payload: candidates + direction only. ``original`` is deliberately\nabsent â\x80\x94 the MCP result reaches an LLM's context, so the raw caller text is not\nechoed (mirrors the sibling languages)."}
latgalian_deromanize
Find the Latgalian word(s) matching a romanized spelling
Find the real Latgalian word(s) whose pronunciation-romanization matches this clean-ASCII input — the inverse direction of `latgalian_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.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'latgalian_deromanizeArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': 'Romanized (clean-ASCII) Latgalian text to resolve back to real orthography. Returns the attested dictionary spelling(s) whose romanization matches (source=dictionary, exact) â\x80\x94 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, the plain o/Å\x8d, the cedilla on Å\x97 and macron length cannot be recovered, and a soft-consonant glide (ly/ny/ky/gy) may be over-restored.'}}}
Schéma de sortie
{'type': 'object', '$defs': {'Candidate': {'type': 'object', 'title': 'Candidate', 'required': ['word', 'source'], 'properties': {'kind': {'anyOf': [{'enum': ['lemma', 'form'], 'type': 'string'}, {'type': 'null'}], 'title': 'Kind', 'default': None, 'description': 'For a lossy-family dictionary candidate, whether the word is a headword (lemma) or an inflected form. None for a reconstruction, and always None for Interslavic transliterate (which does not distinguish lemma from form).'}, 'word': {'type': 'string', 'title': 'Word', 'description': 'A real orthographic word (source=dictionary) or the best-effort reconstruction (source=reconstruction).'}, 'source': {'enum': ['dictionary', 'reconstruction'], 'type': 'string', 'title': 'Source', 'description': 'dictionary = an ATTESTED spelling recalled from the dictionary index (exact, no guessing); reconstruction = a best-effort algorithmic guess, returned only when no attested word matched (never emitted by Interslavic transliterate, which returns empty on a miss instead).'}}, 'description': 'One candidate spelling from a reverse-lookup surface (deromanize /\ndetransliterate, or Interslavic transliterate).'}}, 'title': 'DeromanizedText', 'required': ['candidates', 'approximate'], 'properties': {'candidates': {'type': 'array', 'items': {'$ref': '#/$defs/Candidate'}, 'title': 'Candidates'}, 'approximate': {'type': 'boolean', 'title': 'Approximate'}}, 'description': "The MCP-facing payload: candidates only. ``original`` is deliberately absent â\x80\x94\nthe MCP result reaches an LLM's context, so the raw caller text must not be echoed\n(mirrors ``RomanizedText``/``TransliteratedText``)."}
latgalian_get_inflections
Get a Latgalian inflection table
Fetch the full declension (nominals) or conjugation (verbs — positive AND negative) tables for a lemma identified by a search result's inflection handle (entry_id + word_class). Use this only when a search ran without inline forms or left a match un-expanded — a default search already returns each match's table inline. Returns Markdown plus the table as structuredContent with the shape {"result": <paradigm>} per the declared outputSchema — switch on result.category ('nominal' | 'verbal' | 'not_found') before reading the body. Content from en.wiktionary.org (CC BY-SA 4.0).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'latgalian_get_inflectionsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'maxLength': 80, 'minLength': 1, 'description': "The Wiktionary page title (the lemma) from a search result's inflection handle, e.g. 'akmiÅ\x86s', 'byut'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z ]+$', 'maxLength': 24, 'minLength': 1, 'description': "The part-of-speech section from a search result's inflection handle, e.g. 'verb', 'noun', 'adjective'."}}}
Schéma de sortie
{'type': 'object', '$defs': {'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Latgalian section, no table, or the\npage doesn't exist). ``found`` is False and there is no body."}, 'LatgalianNumberForms': {'type': 'object', 'title': 'LatgalianNumberForms', 'properties': {'plural': {'type': 'string', 'title': 'Plural', 'default': ''}, 'singular': {'type': 'string', 'title': 'Singular', 'default': ''}}, 'description': "A declension cell: the two number forms of one case key. Forms are verbatim\nLatgalian; alternates stay comma-separated as Wiktionary renders them. A number\nthe table doesn't give (defective paradigms) is an empty string."}, 'LatgalianVerbalParadigm': {'type': 'object', 'title': 'LatgalianVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Mood key (lower-case: 'indicative present', 'indicative past', 'indicative future', 'subjunctive', 'imperative'; the negative table's keys are prefixed â\x80\x94 'negative indicative past') â\x86\x92 person or number ('first singular' â\x80¦ 'third plural'; the imperative uses bare 'singular'/'plural') â\x86\x92 the form. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite form ('infinitive', 'supine', 'verbal noun', 'converb', 'debitive', and the participles keyed by tense and voice â\x80\x94 'past active participle', 'present passive participle'; negative-prefixed for that table) â\x86\x92 {'form': <the form>}.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Conjugation of a verb, grouped the way Wiktionary's tables are: finite cells\nkeyed by mood (and, for the indicative, tense) â\x86\x92 person-or-number â\x86\x92 form, plus\nthe non-finite forms (infinitive, supine, verbal noun, converb, debitive and\nthe participles). The negative conjugation renders as its own table and its keys\ncarry a 'negative ' prefix; positive keys are bare."}, 'LatgalianNominalParadigm': {'type': 'object', 'title': 'LatgalianNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key (lower-case: 'nominative', 'genitive', â\x80¦; nouns use the bare case; adjectives prefix the state â\x80\x94 'indefinite nominative' â\x80\x94 and suffix the gender â\x80\x94 'indefinite nominative masculine') â\x86\x92 its singular/plural forms, in table order.", 'additionalProperties': {'$ref': '#/$defs/LatgalianNumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Declension of a noun/adjective/etc.: case key â\x86\x92 {singular, plural}.\n\nNoun tables give the bare case ('nominative', 'genitive', â\x80¦ â\x80\x94 the seven\nLatgalian cases), with no definiteness. Adjective tables come as a family:\nthe state (indefinite/definite, from the table's NavHead) prefixes the key and\nthe gender (masculine/feminine, from the header row) suffixes it â\x80\x94\n'indefinite nominative masculine', 'definite locative feminine'.\n``category`` discriminates this from the verbal and not-found shapes â\x80\x94 switch\non it before reading the body."}}, 'title': 'latgalian_get_inflectionsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/LatgalianNominalParadigm'}, {'$ref': '#/$defs/LatgalianVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'verbal': '#/$defs/LatgalianVerbalParadigm', 'nominal': '#/$defs/LatgalianNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}}}
latgalian_romanize
Romanize Latgalian to clean ASCII
Strip Latgalian 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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'latgalian_romanizeArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': "Latgalian text to reduce to clean, pronounceable ASCII. Lowercases and maps each special letter to an English-readable spelling: the macron vowels double (Ä\x81â\x86\x92aa, Ä\x93â\x86\x92ee, Ä«â\x86\x92ee, Å\x8dâ\x86\x92o, Å«â\x86\x92oo), the caron consonants respell (Ä\x8dâ\x86\x92ch, Å¡â\x86\x92sh, žâ\x86\x92zh), and the soft consonants take a 'y' glide (ļâ\x86\x92ly, Å\x86â\x86\x92ny, Ä·â\x86\x92ky, Ä£â\x86\x92gy; Å\x97â\x86\x92r). A one-way fold â\x80\x94 diacritics are dropped, never added. Pass a word, phrase, or several lines; whitespace and punctuation are preserved."}}}
Schéma de sortie
{'type': 'object', 'title': 'RomanizedText', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'description': 'The romanized ASCII output.'}}, 'description': "The MCP-facing romanization payload: the ASCII output only. ``original`` is\ndeliberately absent â\x80\x94 like the Markdown render (see\n:func:`~livonian.languages.latgalian.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."}
latgalian_search
Look a Latgalian word up
Look a Latgalian word up on Wiktionary and return its senses plus full declension/conjugation tables — attested content, not invented. Any form of the word works; an inflected query is resolved to its lemma automatically via previously cached paradigms and the result notes the resolution. With search_language='eng' the query is an English word instead: the result lists its per-sense Latgalian equivalents (the translations block) plus their expanded entries. Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Results are cached server-side; first-time queries reach the live upstream politely and calls are rate limited — on a rate-limit error, wait a few seconds and retry. Content is from en.wiktionary.org (CC BY-SA 4.0 — attribute and share alike if republished).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['ltg', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``ltg`` looks a Latgalian word up directly (any of its\nforms â\x80\x94 an inflected query resolves via cached paradigms). ``eng`` searches in\nreverse: the English Wiktionary page for the query word lists per-sense\nLatgalian translations, and each distinct lemma is then looked up normally.'}}, 'title': 'latgalian_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 80, 'minLength': 1, 'description': "The word to look up, in the language search_language names. Latgalian (default): a SINGLE Latgalian word, any form â\x80\x94 an inflected form ('akmiÅ\x86a') is resolved to its lemma ('akmiÅ\x86s') automatically via cached paradigms, and the result says so; diacritics are optional once a paradigm is cached ('akmins' finds 'akmiÅ\x86s'). English (search_language='eng'): the English word whose Latgalian equivalents you want â\x80\x94 multiword entries like 'apple tree' work."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': 'Optional override for how many inflection tables to expand this call (0â\x80\x9312). On an uncached query each table is one politely paced upstream fetch, so high values on cold queries are slow. Omit for the server default.'}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full declension/conjugation table is returned INLINE â\x80\x94 usable cases/tenses in ONE call, no follow-up latgalian_get_inflections. Set false for a cheap screen of which entries exist. Bounded by a per-search cap â\x80\x94 use max_forms to adjust per call. For eng queries this governs the expanded Latgalian entries; the per-sense translations list itself is always returned."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'ltg', 'description': "Language the query word is in: 'ltg' (default) looks the Latgalian word up directly; 'eng' finds the Latgalian equivalents of an English word (per-sense, from Wiktionary's translation tables) and returns their full entries. Glosses are in English either way."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'senses': {'type': 'array', 'items': {'$ref': '#/$defs/Sense'}, 'title': 'Senses'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Page title â\x80\x94 feed to latgalian_get_inflections.'}, 'headword': {'type': 'string', 'title': 'Headword'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': 'POS section â\x80\x94 feed to latgalian_get_inflections.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': ''}}, 'description': "One Latgalian entry on the page: the headword (page title) with one\npart-of-speech section's senses."}, 'Sense': {'type': 'object', 'title': 'Sense', 'required': ['gloss'], 'properties': {'gloss': {'type': 'string', 'title': 'Gloss'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Examples'}}, 'description': 'One sense of an entry: the (HTML-stripped) Wiktionary definition line.'}, 'SearchLanguage': {'enum': ['ltg', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``ltg`` looks a Latgalian word up directly (any of its\nforms â\x80\x94 an inflected query resolves via cached paradigms). ``eng`` searches in\nreverse: the English Wiktionary page for the query word lists per-sense\nLatgalian translations, and each distinct lemma is then looked up normally.'}, 'TranslationTerm': {'type': 'object', 'title': 'TranslationTerm', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'description': 'Wiktionary page title â\x80\x94 the lemma itself.'}, 'gender': {'type': 'string', 'title': 'Gender', 'default': '', 'description': "Grammatical gender as marked, e.g. 'm'."}, 'display': {'type': 'string', 'title': 'Display', 'default': '', 'description': 'Rendered form when it differs from the title.'}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "Usage qualifier as marked, e.g. 'dialectal'; else empty."}}, 'description': 'One Latgalian word a translations table offers for an English sense. ``word``\nis the Wiktionary page title (what an ``eng`` search re-searches and what\n``latgalian_get_inflections`` needs).'}, 'InflectionHandle': {'type': 'object', 'title': 'InflectionHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/LatgalianNominalParadigm'}, {'$ref': '#/$defs/LatgalianVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'discriminator': {'mapping': {'verbal': '#/$defs/LatgalianVerbalParadigm', 'nominal': '#/$defs/LatgalianNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, 'description': 'The full paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap.'}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'Nearby headword / hint.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'Wiktionary page title â\x80\x94 the lemma itself.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': 'Part-of-speech hint.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Part-of-speech section, e.g. 'verb', 'noun'."}}, 'description': 'A structured anchor for fetching a full paradigm: feed ``entry_id`` (the page\ntitle) + ``word_class`` (the POS section) to ``latgalian_get_inflections`` â\x80\x94 or\nask ``search`` to include the table inline (``forms``).'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Latgalian section, no table, or the\npage doesn't exist). ``found`` is False and there is no body."}, 'TranslationSense': {'type': 'object', 'title': 'TranslationSense', 'required': ['sense'], 'properties': {'sense': {'type': 'string', 'title': 'Sense', 'description': 'The sense gloss the source table carries.'}, 'terms': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationTerm'}, 'title': 'Terms'}}, 'description': 'One English sense (a translations table) and the Latgalian terms it offers.'}, 'LatgalianNumberForms': {'type': 'object', 'title': 'LatgalianNumberForms', 'properties': {'plural': {'type': 'string', 'title': 'Plural', 'default': ''}, 'singular': {'type': 'string', 'title': 'Singular', 'default': ''}}, 'description': "A declension cell: the two number forms of one case key. Forms are verbatim\nLatgalian; alternates stay comma-separated as Wiktionary renders them. A number\nthe table doesn't give (defective paradigms) is an empty string."}, 'LatgalianVerbalParadigm': {'type': 'object', 'title': 'LatgalianVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Mood key (lower-case: 'indicative present', 'indicative past', 'indicative future', 'subjunctive', 'imperative'; the negative table's keys are prefixed â\x80\x94 'negative indicative past') â\x86\x92 person or number ('first singular' â\x80¦ 'third plural'; the imperative uses bare 'singular'/'plural') â\x86\x92 the form. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite form ('infinitive', 'supine', 'verbal noun', 'converb', 'debitive', and the participles keyed by tense and voice â\x80\x94 'past active participle', 'present passive participle'; negative-prefixed for that table) â\x86\x92 {'form': <the form>}.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Conjugation of a verb, grouped the way Wiktionary's tables are: finite cells\nkeyed by mood (and, for the indicative, tense) â\x86\x92 person-or-number â\x86\x92 form, plus\nthe non-finite forms (infinitive, supine, verbal noun, converb, debitive and\nthe participles). The negative conjugation renders as its own table and its keys\ncarry a 'negative ' prefix; positive keys are bare."}, 'LatgalianNominalParadigm': {'type': 'object', 'title': 'LatgalianNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key (lower-case: 'nominative', 'genitive', â\x80¦; nouns use the bare case; adjectives prefix the state â\x80\x94 'indefinite nominative' â\x80\x94 and suffix the gender â\x80\x94 'indefinite nominative masculine') â\x86\x92 its singular/plural forms, in table order.", 'additionalProperties': {'$ref': '#/$defs/LatgalianNumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Declension of a noun/adjective/etc.: case key â\x86\x92 {singular, plural}.\n\nNoun tables give the bare case ('nominative', 'genitive', â\x80¦ â\x80\x94 the seven\nLatgalian cases), with no definiteness. Adjective tables come as a family:\nthe state (indefinite/definite, from the table's NavHead) prefixes the key and\nthe gender (masculine/feminine, from the header row) suffixes it â\x80\x94\n'indefinite nominative masculine', 'definite locative feminine'.\n``category`` discriminates this from the verbal and not-found shapes â\x80\x94 switch\non it before reading the body."}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched. For an eng query, True means Latgalian translations were found â\x80\x94 entries may still be empty when none of them could be expanded (see translations).'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/InflectionHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'translations': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationSense'}, 'title': 'Translations', 'description': 'Populated only for eng queries (always [] for ltg): the Latgalian terms each English sense translates to, in sense order. Entries/handles below are the expanded dictionary entries of those terms.'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': 'The original inflected query when resolved; else empty. ltg queries only â\x80\x94 always empty for eng results.'}, 'search_method': {'enum': ['direct', 'lemma_index', 'translations'], 'type': 'string', 'title': 'Search Method', 'default': 'direct', 'description': "How the match was found: 'direct' = the query itself matched; 'lemma_index' = an inflected form resolved via a previously cached paradigm; 'translations' = an English query resolved via Wiktionary translation tables."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': 'The lemma actually searched when resolved; else empty. ltg queries only â\x80\x94 always empty for eng results.'}, 'forms_truncated': {'type': 'integer', 'title': 'Forms Truncated', 'default': 0, 'description': 'How many handles did NOT get an inline table because the per-search cap was reached.'}, 'translations_truncated': {'type': 'integer', 'title': 'Translations Truncated', 'default': 0, 'description': 'How many distinct translated lemmas were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).'}}, 'description': 'The result of a dictionary search.'}
latin_get_inflections
Get a Latin inflection table
Fetch the full declension (nominals) or conjugation (verbs) table for a lemma identified by a search result's inflection handle (entry_id + word_class). Use this only when a search ran without inline forms or left a match un-expanded — a default search already returns each match's table inline. Returns Markdown plus the table as structuredContent with the shape {"result": <paradigm>} per the declared outputSchema — switch on result.category ('nominal' | 'verbal' | 'not_found') before reading the body. Content from en.wiktionary.org (CC BY-SA 4.0).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'latin_get_inflectionsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'maxLength': 80, 'minLength': 1, 'description': "The Wiktionary page title (the lemma) from a search result's inflection handle, e.g. 'amo', 'aqua'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z ]+$', 'maxLength': 24, 'minLength': 1, 'description': "The part-of-speech section from a search result's inflection handle, e.g. 'verb', 'noun', 'adjective'."}}}
Schéma de sortie
{'type': 'object', '$defs': {'NumberForms': {'type': 'object', 'title': 'NumberForms', 'required': ['singular', 'plural'], 'properties': {'plural': {'type': 'string', 'title': 'Plural'}, 'singular': {'type': 'string', 'title': 'Singular'}}, 'description': 'A declension cell: the two number forms of one case. Latin forms are verbatim\n(macrons preserved); alternates stay space-separated as Wiktionary renders them.'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latin entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Latin section, no table, or the\npage doesn't exist). ``found`` is False and there is no table body."}, 'LatinVerbalParadigm': {'type': 'object', 'title': 'LatinVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "'<voice> <mood> <tense>' (lower-case, e.g. 'active indicative present') â\x86\x92 person/number ('first singular' â\x80¦ 'third plural') â\x86\x92 the form. Periphrastic rows (e.g. passive perfect) appear under the single key 'all'. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latin entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite section ('infinitive', 'participle', 'gerund', 'supine') â\x86\x92 label ('active present', 'genitive', â\x80¦) â\x86\x92 the form.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'Conjugation of a verb, grouped the way Wiktionary\'s table is:\nfinite cells keyed by "<voice> <mood> <tense>" â\x86\x92 person/number â\x86\x92 form, plus the\nnon-finite sections (infinitives, participles, gerund, supine).'}, 'LatinNominalParadigm': {'type': 'object', 'title': 'LatinNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case name (lower-case: 'nominative', 'genitive', â\x80¦) â\x86\x92 its singular/plural forms, in table order.", 'additionalProperties': {'$ref': '#/$defs/NumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latin entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'Declension of a noun/adjective/etc.: case â\x86\x92 {singular, plural}.\n\n``category`` discriminates this from the verbal and not-found shapes â\x80\x94 switch on\nit before reading the body.'}}, 'title': 'latin_get_inflectionsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/LatinNominalParadigm'}, {'$ref': '#/$defs/LatinVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'verbal': '#/$defs/LatinVerbalParadigm', 'nominal': '#/$defs/LatinNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}}}
latin_lemmatize
Morphologically analyze a Latin form
Analyze one inflected Latin form with the Morpheus morphological analyzer: its lemma(s) plus the grammatical reading (person, number, tense, mood, voice, case…). Useful when you want the morphology itself — for the dictionary entry, latin_search already resolves inflected queries on its own. Returns Markdown plus the analysis as structuredContent matching the declared outputSchema. Results are cached server-side. Analyses via the Perseids Morpheus service.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'latin_lemmatizeArguments', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'maxLength': 80, 'minLength': 1, 'description': "One inflected Latin word form to analyze, e.g. 'amavit', 'aquam'. Macrons optional."}}}
Schéma de sortie
{'type': 'object', '$defs': {'MorphAnalysis': {'type': 'object', 'title': 'MorphAnalysis', 'required': ['lemma'], 'properties': {'tags': {'type': 'object', 'title': 'Tags', 'additionalProperties': {'type': 'string'}}, 'lemma': {'type': 'string', 'title': 'Lemma'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Morpheus morphological analyses via the Perseids Project morphology service (morph.perseids.org), Tufts University / Perseus Digital Library.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': ''}}, 'description': 'One Morpheus analysis of an inflected form: its lemma plus the grammatical\ntags the analyzer assigned (mood/tense/case/number/â\x80¦, whatever applies).'}}, 'title': 'Lemmatization', 'required': ['word', 'found'], 'properties': {'word': {'type': 'string', 'title': 'Word'}, 'found': {'type': 'boolean', 'title': 'Found'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Morpheus morphological analyses via the Perseids Project morphology service (morph.perseids.org), Tufts University / Perseus Digital Library.'}, 'analyses': {'type': 'array', 'items': {'$ref': '#/$defs/MorphAnalysis'}, 'title': 'Analyses'}}, 'description': 'The result of lemmatizing one word form via Morpheus.'}
latin_search
Look a Latin word up
Look a Latin word up on Wiktionary and return its senses plus full declension/conjugation tables — attested content, not invented. Any form of the word works; an inflected query is resolved to its lemma automatically (via previously cached paradigms or the Morpheus analyzer) and the result notes the resolution. With search_language='eng' the query is an English word instead: the result lists its per-sense Latin equivalents (the translations block) plus their expanded entries. Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Results are cached server-side; first-time queries reach the live upstream politely and calls are rate limited — on a rate-limit error, wait a few seconds and retry. Content is from en.wiktionary.org (CC BY-SA 4.0 — attribute and share alike if republished).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['lat', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``lat`` looks a Latin word up directly (any of its forms â\x80\x94\nan inflected query resolves via the form index or Morpheus). ``eng`` searches in\nreverse: the English Wiktionary page for the query word lists per-sense Latin\ntranslations, and each distinct Latin lemma is then looked up normally.'}}, 'title': 'latin_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 80, 'minLength': 1, 'description': "The word to look up, in the language search_language names. Latin (default): a SINGLE word, any form â\x80\x94 an inflected form ('amavit') is resolved to its lemma ('amo') automatically, and the result names it (search_method tells you how; resolved_lemma is the lemma to follow for the full paradigm); macrons are optional ('amo' and 'amÅ\x8d' both work). English (search_language='eng'): the English word whose Latin equivalents you want â\x80\x94 multiword entries like 'give up' work."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': 'Optional override for how many inflection tables to expand this call (0â\x80\x9312). On an uncached query each table is one politely paced upstream fetch, so high values on cold queries are slow. Omit for the server default.'}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full declension/conjugation table is returned INLINE â\x80\x94 usable cases/tenses in ONE call, no follow-up latin_get_inflections. Set false for a cheap screen of which entries exist. Bounded by a per-search cap â\x80\x94 use max_forms to adjust per call. For eng queries this governs the expanded Latin entries; the per-sense translations list itself is always returned."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'lat', 'description': "Language the query word is in: 'lat' (default) looks the Latin word up directly; 'eng' finds the Latin equivalents of an English word (per-sense, from Wiktionary's translation tables) and returns their full entries. Glosses are in English either way."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'senses': {'type': 'array', 'items': {'$ref': '#/$defs/Sense'}, 'title': 'Senses'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Page title â\x80\x94 feed to latin_get_inflections.'}, 'headword': {'type': 'string', 'title': 'Headword'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': 'POS section â\x80\x94 feed to latin_get_inflections.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': ''}}, 'description': "One Latin entry on the page: the headword (page title) with one\npart-of-speech section's senses."}, 'Sense': {'type': 'object', 'title': 'Sense', 'required': ['gloss'], 'properties': {'gloss': {'type': 'string', 'title': 'Gloss'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'form_of': {'type': 'string', 'title': 'Form Of', 'default': '', 'description': "When this sense is a non-lemma inflected form ('accusative singular of aqua'), the lemma it inflects from â\x80\x94 its Wiktionary page title, ready to search or feed to latin_get_inflections for the full paradigm. Empty for an ordinary gloss."}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Examples'}}, 'description': 'One sense of an entry: the (HTML-stripped) Wiktionary definition line.'}, 'NumberForms': {'type': 'object', 'title': 'NumberForms', 'required': ['singular', 'plural'], 'properties': {'plural': {'type': 'string', 'title': 'Plural'}, 'singular': {'type': 'string', 'title': 'Singular'}}, 'description': 'A declension cell: the two number forms of one case. Latin forms are verbatim\n(macrons preserved); alternates stay space-separated as Wiktionary renders them.'}, 'SearchLanguage': {'enum': ['lat', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``lat`` looks a Latin word up directly (any of its forms â\x80\x94\nan inflected query resolves via the form index or Morpheus). ``eng`` searches in\nreverse: the English Wiktionary page for the query word lists per-sense Latin\ntranslations, and each distinct Latin lemma is then looked up normally.'}, 'TranslationTerm': {'type': 'object', 'title': 'TranslationTerm', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'description': 'Wiktionary page title â\x80\x94 the lemma itself.'}, 'gender': {'type': 'string', 'title': 'Gender', 'default': '', 'description': "Grammatical gender as marked, e.g. 'f'."}, 'display': {'type': 'string', 'title': 'Display', 'default': '', 'description': 'Rendered form when it differs from the title (macrons).'}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "Usage qualifier as marked, e.g. 'poetic'; else empty."}}, 'description': "One Latin word a translations table offers for an English sense. ``word`` is\nthe Wiktionary page title (what an ``eng`` search re-searches and what\n``latin_get_inflections`` needs); ``display`` keeps the rendered text only when it\ndiffers (macrons: title 'uvidus' renders as 'Å«vidus')."}, 'InflectionHandle': {'type': 'object', 'title': 'InflectionHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/LatinNominalParadigm'}, {'$ref': '#/$defs/LatinVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'discriminator': {'mapping': {'verbal': '#/$defs/LatinVerbalParadigm', 'nominal': '#/$defs/LatinNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, 'description': 'The full paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap.'}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'Nearby headword / hint.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'Wiktionary page title â\x80\x94 the lemma itself.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': 'Part-of-speech hint.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Part-of-speech section, e.g. 'verb', 'noun'."}}, 'description': 'A structured anchor for fetching a full paradigm: feed ``entry_id`` (the page\ntitle) + ``word_class`` (the POS section) to ``latin_get_inflections`` â\x80\x94 or ask\n``search`` to include the table inline (``forms``).'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latin entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Latin section, no table, or the\npage doesn't exist). ``found`` is False and there is no table body."}, 'TranslationSense': {'type': 'object', 'title': 'TranslationSense', 'required': ['sense'], 'properties': {'sense': {'type': 'string', 'title': 'Sense', 'description': 'The sense gloss the source table carries.'}, 'terms': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationTerm'}, 'title': 'Terms'}}, 'description': 'One English sense (a translations table) and the Latin terms it offers.'}, 'LatinVerbalParadigm': {'type': 'object', 'title': 'LatinVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "'<voice> <mood> <tense>' (lower-case, e.g. 'active indicative present') â\x86\x92 person/number ('first singular' â\x80¦ 'third plural') â\x86\x92 the form. Periphrastic rows (e.g. passive perfect) appear under the single key 'all'. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latin entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite section ('infinitive', 'participle', 'gerund', 'supine') â\x86\x92 label ('active present', 'genitive', â\x80¦) â\x86\x92 the form.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'Conjugation of a verb, grouped the way Wiktionary\'s table is:\nfinite cells keyed by "<voice> <mood> <tense>" â\x86\x92 person/number â\x86\x92 form, plus the\nnon-finite sections (infinitives, participles, gerund, supine).'}, 'LatinNominalParadigm': {'type': 'object', 'title': 'LatinNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case name (lower-case: 'nominative', 'genitive', â\x80¦) â\x86\x92 its singular/plural forms, in table order.", 'additionalProperties': {'$ref': '#/$defs/NumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latin entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'Declension of a noun/adjective/etc.: case â\x86\x92 {singular, plural}.\n\n``category`` discriminates this from the verbal and not-found shapes â\x80\x94 switch on\nit before reading the body.'}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched. For an eng query, True means Latin translations were found â\x80\x94 entries may still be empty when none of them could be expanded (see translations).'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Latin entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/InflectionHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'translations': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationSense'}, 'title': 'Translations', 'description': 'Populated only for eng queries (always [] for lat): the Latin terms each English sense translates to, in sense order. Entries/handles below are the expanded dictionary entries of those terms.'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': "The query whose lemma this result names (paired with resolved_lemma); else empty. lat queries only (always empty for eng). Set both when an inflected miss was re-searched (search_method lemma_index/morpheus) and when the query's own page is a form-of stub returned directly (search_method stays 'direct')."}, 'search_method': {'enum': ['direct', 'lemma_index', 'morpheus', 'translations'], 'type': 'string', 'title': 'Search Method', 'default': 'direct', 'description': "How the match was found: 'direct' = the query itself matched; 'lemma_index' = an inflected form resolved via a previously cached paradigm; 'morpheus' = resolved via the Morpheus morphological analyzer; 'translations' = an English query resolved via Wiktionary translation tables."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': "The lemma this query maps to; else empty. lat queries only. With search_method 'lemma_index'/'morpheus' the entries below ARE this lemma's; with 'direct' the entries are the queried form-of stub and this names the lemma whose page holds the full paradigm (search it / latin_get_inflections it). Only set when unambiguous â\x80\x94 a form mapping to several lemmas leaves it empty (use lemmatize); the per-sense form_of still carries each."}, 'forms_truncated': {'type': 'integer', 'title': 'Forms Truncated', 'default': 0, 'description': 'How many handles did NOT get an inline table because the per-search cap was reached.'}, 'translations_truncated': {'type': 'integer', 'title': 'Translations Truncated', 'default': 0, 'description': 'How many distinct translated lemmas were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).'}}, 'description': 'The result of a dictionary search.'}
livonian_deromanize
Find the Livonian word(s) matching a romanized spelling
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.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'livonian_deromanizeArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': 'Romanized (clean-ASCII) Livonian text to resolve back to real orthography. Returns the attested dictionary spelling(s) whose romanization matches (source=dictionary, exact) â\x80\x94 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.'}}}
Schéma de sortie
{'type': 'object', '$defs': {'Candidate': {'type': 'object', 'title': 'Candidate', 'required': ['word', 'source'], 'properties': {'kind': {'anyOf': [{'enum': ['lemma', 'form'], 'type': 'string'}, {'type': 'null'}], 'title': 'Kind', 'default': None, 'description': 'For a lossy-family dictionary candidate, whether the word is a headword (lemma) or an inflected form. None for a reconstruction, and always None for Interslavic transliterate (which does not distinguish lemma from form).'}, 'word': {'type': 'string', 'title': 'Word', 'description': 'A real orthographic word (source=dictionary) or the best-effort reconstruction (source=reconstruction).'}, 'source': {'enum': ['dictionary', 'reconstruction'], 'type': 'string', 'title': 'Source', 'description': 'dictionary = an ATTESTED spelling recalled from the dictionary index (exact, no guessing); reconstruction = a best-effort algorithmic guess, returned only when no attested word matched (never emitted by Interslavic transliterate, which returns empty on a miss instead).'}}, 'description': 'One candidate spelling from a reverse-lookup surface (deromanize /\ndetransliterate, or Interslavic transliterate).'}}, 'title': 'DeromanizedText', 'required': ['candidates', 'approximate'], 'properties': {'candidates': {'type': 'array', 'items': {'$ref': '#/$defs/Candidate'}, 'title': 'Candidates'}, 'approximate': {'type': 'boolean', 'title': 'Approximate'}}, 'description': "The MCP-facing payload: candidates only. ``original`` is deliberately absent â\x80\x94\nthe MCP result reaches an LLM's context, so the raw caller text must not be echoed\n(mirrors ``RomanizedText``/``TransliteratedText``)."}
livonian_get_inflections
Get Livonian inflection table
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": <paradigm>} 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).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'livonian_get_inflectionsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'anyOf': [{'type': 'integer'}, {'type': 'string'}], 'title': 'Entry Id', 'description': 'The word id from a search result\'s inflection handle. Accepts a number or a digit-string (e.g. 17746 or "17746").'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z]+$', 'maxLength': 8, 'minLength': 1, 'description': "The word-class code from a search result's inflection handle (e.g. 's' = noun, 'adj' = adjective, 'vi' = intransitive verb, 'vt' = transitive verb)."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Polarity': {'type': 'object', 'title': 'Polarity', 'required': ['affirmative', 'negative'], 'properties': {'negative': {'type': 'string', 'title': 'Negative'}, 'affirmative': {'type': 'string', 'title': 'Affirmative'}}, 'description': 'A verbal cell: the two polarities of one person in one mood/tense. ``negative``\nis the ready-to-use form â\x80\x94 the negation auxiliary (äb/äd/iz/algõâ\x80¦) is already folded\nin (e.g. ``äb toup``), not orphaned in a separate column. Livonian forms are verbatim.'}, 'NumberForms': {'type': 'object', 'title': 'NumberForms', 'required': ['singular', 'plural'], 'properties': {'plural': {'type': 'string', 'title': 'Plural'}, 'singular': {'type': 'string', 'title': 'Singular'}}, 'description': 'A nominal cell: the two number forms of one case. Livonian forms are verbatim.'}, 'VerbalParadigm': {'type': 'object', 'title': 'VerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Mood/tense (English, lower-case: 'present', 'past', 'conditional', â\x80¦) â\x86\x92 pronoun (Livonian, verbatim: ma/sa/ta/mÄ\x93g/tÄ\x93g/ne) â\x86\x92 {affirmative, negative}. The negative already includes its auxiliary.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'$ref': '#/$defs/Polarity'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'ErnÅ¡treits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & VÄ\x81vere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite section (English, lower-case: 'principal parts', 'participles') â\x86\x92 form label (English) â\x86\x92 the Livonian form.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, '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.'}, 'NominalParadigm': {'type': 'object', 'title': 'NominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case name (English, lower-case) â\x86\x92 its singular/plural forms, in paradigm order, e.g. 'nominative', 'genitive', 'partitive'.", 'additionalProperties': {'$ref': '#/$defs/NumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'ErnÅ¡treits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & VÄ\x81vere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'Declension of a noun/adjective/numeral/pronoun: case â\x86\x92 {singular, plural}.\n\n``category`` discriminates this from the verbal and not-found shapes â\x80\x94 switch on it\nbefore reading the body.'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'ErnÅ¡treits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & VÄ\x81vere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': '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.'}}, 'title': 'livonian_get_inflectionsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/NominalParadigm'}, {'$ref': '#/$defs/VerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'verbal': '#/$defs/VerbalParadigm', 'nominal': '#/$defs/NominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}}}
livonian_romanize
Romanize Livonian to clean ASCII
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'livonian_romanizeArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': "Livonian text to reduce to clean, pronounceable ASCII. Strips macrons, diacritics and capitals (Ä\x81â\x86\x92aa, Å¡â\x86\x92sh, õâ\x86\x92u), softens a palatalized consonant (Å\x86 ļ Å\x97 Å£ á¸\x91) only before a vowel (Å\x86+aâ\x86\x92nya, else ikÅ¡iggiÅ\x86â\x86\x92ikshiggin), and hyphenates the broken tone (si'zzõlâ\x86\x92siz-zul) and long-vowel diphthong glides (kÄ«enâ\x86\x92kee-en). Pass a word, phrase, or several lines."}}}
Schéma de sortie
{'type': 'object', 'title': 'RomanizedText', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'description': 'The romanized ASCII output.'}}, 'description': "The MCP-facing romanization payload: the ASCII output only. ``original`` is\ndeliberately absent â\x80\x94 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."}
livonian_search
Search the Livonian dictionary
Look a word up in the real Livonian–Estonian–Latvian dictionary and return only attested content, so translations are grounded, not invented. Search a meaning (in English/Latvian/Estonian) to find the Livonian headword, or a Livonian word to confirm it exists and read its sense, part of speech and examples. See the `query` and `search_language` parameter docs for how to phrase a query. By default each match's full inflection table is returned inline, so one call usually suffices; on a broad query only the first N tables expand (the rest are listed as handles to fetch with livonian_get_inflections). Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Results are cached server-side, so repeating a query is instant and free; a first-time query reaches the live dictionary and calls are rate limited — on a rate-limit error, wait a few seconds and retry instead of re-issuing immediately. Dictionary content is from livonian.tech (CC BY-SA 4.0 — attribute if republished).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['liv', 'lat', 'est', 'eng'], 'type': 'string', 'title': '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."}}, 'title': 'livonian_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 120, 'minLength': 1, 'description': "A SINGLE content word, not a phrase. Exactly one word per call â\x80\x94 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 â\x80\x94 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Ä\x81', 'away', 'sea'). Matching is bidirectional. An inflected Livonian form (search_language='liv') is resolved to its dictionary lemma automatically when the form is known â\x80\x94 the result says so when that happened."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': "Optional override for how many inflection tables to expand this call (0â\x80\x9312). 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 â\x80\x94 the bound limits upstream fan-out, not just response size. Omit to use the server's default cap."}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full inflection table is returned INLINE â\x80\x94 usable cases/tenses in ONE call, no follow-up livonian_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 â\x80\x94 use max_forms to raise or lower it for this call."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'eng', 'description': "Language your query word is in â\x80\x94 selects which language the search matches against: 'eng' (default), 'liv', 'lat', or 'est'. For Englishâ\x86\x92Livonian translation, keep 'eng'. Glosses are in English."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'senses': {'type': 'array', 'items': {'$ref': '#/$defs/Sense'}, 'title': 'Senses'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Numeric word id for the forms endpoint.'}, 'headword': {'type': 'string', 'title': 'Headword'}, 'type_code': {'type': 'string', 'title': 'Type Code', 'default': '', 'description': "Paradigm type code, e.g. '99', '53a'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': "Word-class code, e.g. 's', 'vt', 'adj'."}, 'pronunciation': {'type': 'string', 'title': 'Pronunciation', 'default': '', 'description': 'Phonetic form in braces, e.g. {äm}.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': '', 'description': "e.g. 'noun', 'verb', 'adjective'."}}, 'description': '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` â\x80\x94 feed them to ``livonian_get_inflections`` for the full paradigm.\nEvery field except ``headword``/``gloss`` defaults, so a card missing a\npronunciation, type code, or senses still validates.'}, 'Sense': {'type': 'object', 'title': 'Sense', 'required': ['gloss'], 'properties': {'gloss': {'type': 'string', 'title': 'Gloss'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'examples': {'type': 'array', 'items': {'$ref': '#/$defs/Example'}, 'title': 'Examples'}}, '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.'}, 'Example': {'type': 'object', 'title': 'Example', 'required': ['livonian'], 'properties': {'english': {'type': 'string', 'title': 'English', 'default': ''}, 'livonian': {'type': 'string', 'title': 'Livonian'}}, '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.'}, 'Polarity': {'type': 'object', 'title': 'Polarity', 'required': ['affirmative', 'negative'], 'properties': {'negative': {'type': 'string', 'title': 'Negative'}, 'affirmative': {'type': 'string', 'title': 'Affirmative'}}, 'description': 'A verbal cell: the two polarities of one person in one mood/tense. ``negative``\nis the ready-to-use form â\x80\x94 the negation auxiliary (äb/äd/iz/algõâ\x80¦) is already folded\nin (e.g. ``äb toup``), not orphaned in a separate column. Livonian forms are verbatim.'}, 'NumberForms': {'type': 'object', 'title': 'NumberForms', 'required': ['singular', 'plural'], 'properties': {'plural': {'type': 'string', 'title': 'Plural'}, 'singular': {'type': 'string', 'title': 'Singular'}}, 'description': 'A nominal cell: the two number forms of one case. Livonian forms are verbatim.'}, 'SearchLanguage': {'enum': ['liv', 'lat', 'est', 'eng'], 'type': 'string', 'title': '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."}, 'VerbalParadigm': {'type': 'object', 'title': 'VerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Mood/tense (English, lower-case: 'present', 'past', 'conditional', â\x80¦) â\x86\x92 pronoun (Livonian, verbatim: ma/sa/ta/mÄ\x93g/tÄ\x93g/ne) â\x86\x92 {affirmative, negative}. The negative already includes its auxiliary.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'$ref': '#/$defs/Polarity'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'ErnÅ¡treits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & VÄ\x81vere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite section (English, lower-case: 'principal parts', 'participles') â\x86\x92 form label (English) â\x86\x92 the Livonian form.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, '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.'}, 'NominalParadigm': {'type': 'object', 'title': 'NominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case name (English, lower-case) â\x86\x92 its singular/plural forms, in paradigm order, e.g. 'nominative', 'genitive', 'partitive'.", 'additionalProperties': {'$ref': '#/$defs/NumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'ErnÅ¡treits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & VÄ\x81vere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'Declension of a noun/adjective/numeral/pronoun: case â\x86\x92 {singular, plural}.\n\n``category`` discriminates this from the verbal and not-found shapes â\x80\x94 switch on it\nbefore reading the body.'}, 'InflectionHandle': {'type': 'object', 'title': 'InflectionHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/NominalParadigm'}, {'$ref': '#/$defs/VerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'discriminator': {'mapping': {'verbal': '#/$defs/VerbalParadigm', 'nominal': '#/$defs/NominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, '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."}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'Nearby headword / entry text.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'Numeric word id used by the forms endpoint.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': 'Part-of-speech hint near the link.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Word-class code, e.g. 's', 'vi', 'vt', 'adj'."}}, 'description': 'A reliable, structured anchor for fetching a full paradigm. Feed\n``entry_id`` + ``word_class`` to ``livonian_get_inflections`` â\x80\x94 or ask ``search`` to\ninclude the table inline (``forms``).'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'ErnÅ¡treits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & VÄ\x81vere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': '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.'}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched.'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'ErnÅ¡treits, Valts (ed. in chief), Viitso, Tiit-Rein, VÄ\x81vere, Signis, Damberg, PÄ\x93tõr, Kurpniece, Milda, Balodis, Uldis, Tuisk, Tuuli, KÅ«la, Gita, Tomingas, Marili, Soosaar Sven-Erik, SedláÄ\x8dková, Anna & Jurgenovskis, Toms. 2024. Livonian lexicographic database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries', 'description': 'Structured dictionary entries: headword, pronunciation, part of speech, paradigm anchors, and senses with example sentences.'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/InflectionHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': "The original inflected query when search_method='lemma_index'; empty on a direct match."}, 'search_method': {'enum': ['direct', 'lemma_index'], 'type': 'string', 'title': '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."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': "The dictionary lemma actually searched when search_method='lemma_index'; empty on a direct match."}, 'forms_truncated': {'type': 'integer', 'title': '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 livonian_get_inflections.'}}, 'description': 'The result of a dictionary search.'}
norse_get_inflections
Get an Old Norse inflection table
Fetch the full declension (nominals) or conjugation (verbs — active AND mediopassive) tables for a lemma identified by a search result's inflection handle (entry_id + word_class). Use this only when a search ran without inline forms or left a match un-expanded — a default search already returns each match's table inline. Returns Markdown plus the table as structuredContent with the shape {"result": <paradigm>} per the declared outputSchema — switch on result.category ('nominal' | 'verbal' | 'not_found') before reading the body. Content from en.wiktionary.org (CC BY-SA 4.0).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'norse_get_inflectionsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'maxLength': 80, 'minLength': 1, 'description': "The Wiktionary page title (the lemma) from a search result's inflection handle, e.g. 'maðr', 'kasta'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z ]+$', 'maxLength': 24, 'minLength': 1, 'description': "The part-of-speech section from a search result's inflection handle, e.g. 'verb', 'noun', 'adjective'."}}}
Schéma de sortie
{'type': 'object', '$defs': {'NorseNumberForms': {'type': 'object', 'title': 'NorseNumberForms', 'properties': {'plural': {'type': 'string', 'title': 'Plural', 'default': ''}, 'singular': {'type': 'string', 'title': 'Singular', 'default': ''}}, 'description': "A declension cell: the two number forms of one case key. Forms are verbatim\nnormalized Old Norse; alternates stay comma-separated as Wiktionary renders\nthem. A number the table doesn't give (defective paradigms) is an empty\nstring."}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Norse entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Old Norse section, no table, or\nthe page doesn't exist). ``found`` is False and there is no body."}, 'NorseVerbalParadigm': {'type': 'object', 'title': 'NorseVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Mood and tense (lower-case: 'indicative present', 'subjunctive past', 'imperative present'; the mediopassive table's keys are prefixed â\x80\x94 'mediopassive indicative past') â\x86\x92 person and number ('first singular' â\x80¦ 'third plural') â\x86\x92 the form. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Norse entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite form ('infinitive', 'present participle', 'past participle'; mediopassive-prefixed for that voice) â\x86\x92 {'form': <the form>}.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Conjugation of a verb, grouped the way Wiktionary's tables are: finite cells\nkeyed by mood and tense â\x86\x92 person-and-number â\x86\x92 form, plus the non-finite forms\n(infinitive and the participles). The mediopassive voice renders as its own\ntable and its keys carry a 'mediopassive ' prefix; active keys are bare."}, 'NorseNominalParadigm': {'type': 'object', 'title': 'NorseNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key (lower-case: 'nominative', 'genitive', â\x80¦; nouns prefix the definiteness â\x80\x94 'indefinite nominative'; adjectives prefix the caption-derived declension class/degree and suffix the gender â\x80\x94 'strong nominative feminine') â\x86\x92 its singular/plural forms, in table order.", 'additionalProperties': {'$ref': '#/$defs/NorseNumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Norse entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Declension of a noun/adjective/etc.: case key â\x86\x92 {singular, plural}.\n\nNoun tables split by definiteness, folded into the key as a prefix:\n'indefinite nominative', 'definite genitive'. Adjective tables split by gender\n(suffixed: 'nominative feminine') and come one per declension class and degree,\nfolded in as a caption-derived prefix: 'strong nominative feminine',\n'weak superlative accusative neuter', 'comparative dative masculine'.\n``category`` discriminates this from the verbal and not-found shapes â\x80\x94 switch\non it before reading the body."}}, 'title': 'norse_get_inflectionsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/NorseNominalParadigm'}, {'$ref': '#/$defs/NorseVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'verbal': '#/$defs/NorseVerbalParadigm', 'nominal': '#/$defs/NorseNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}}}
norse_search
Look an Old Norse word up
Look an Old Norse word up on Wiktionary and return its senses plus full declension/conjugation tables — attested content (including the verbs' mediopassive voice), not invented. Any form of the word works; an inflected query is resolved to its lemma automatically via previously cached paradigms and the result notes the resolution. With search_language='eng' the query is an English word instead: the result lists its per-sense Old Norse equivalents (the translations block) plus their expanded entries. Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Results are cached server-side; first-time queries reach the live upstream politely and calls are rate limited — on a rate-limit error, wait a few seconds and retry. Content is from en.wiktionary.org (CC BY-SA 4.0 — attribute and share alike if republished).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['non', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``non`` looks an Old Norse word up directly (any of its\nforms â\x80\x94 an inflected query resolves via cached paradigms). ``eng`` searches in\nreverse: the English Wiktionary page for the query word lists per-sense Old\nNorse translations, and each distinct lemma is then looked up normally.'}}, 'title': 'norse_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 80, 'minLength': 1, 'description': "The word to look up, in the language search_language names. Old Norse (default): a SINGLE Old Norse word, any form â\x80\x94 an inflected form ('mÇ«nnum') is resolved to its lemma ('maðr') automatically via cached paradigms, and the result says so; diacritics are optional once a paradigm is cached ('madr' and 'mathr' both find maðr, 'monnum' finds mÇ«nnum). English (search_language='eng'): the English word whose Old Norse equivalents you want â\x80\x94 multiword entries like 'apple tree' work."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': 'Optional override for how many inflection tables to expand this call (0â\x80\x9312). On an uncached query each table is one politely paced upstream fetch, so high values on cold queries are slow. Omit for the server default.'}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full declension/conjugation table is returned INLINE â\x80\x94 usable cases/tenses (and the verbs' mediopassive voice) in ONE call, no follow-up norse_get_inflections. Set false for a cheap screen of which entries exist. Bounded by a per-search cap â\x80\x94 use max_forms to adjust per call. For eng queries this governs the expanded Old Norse entries; the per-sense translations list itself is always returned."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'non', 'description': "Language the query word is in: 'non' (default) looks the Old Norse word up directly; 'eng' finds the Old Norse equivalents of an English word (per-sense, from Wiktionary's translation tables) and returns their full entries. Glosses are in English either way."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'senses': {'type': 'array', 'items': {'$ref': '#/$defs/Sense'}, 'title': 'Senses'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Page title â\x80\x94 feed to norse_get_inflections.'}, 'headword': {'type': 'string', 'title': 'Headword'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': 'POS section â\x80\x94 feed to norse_get_inflections.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': ''}}, 'description': "One Old Norse entry on the page: the headword (page title) with one\npart-of-speech section's senses."}, 'Sense': {'type': 'object', 'title': 'Sense', 'required': ['gloss'], 'properties': {'gloss': {'type': 'string', 'title': 'Gloss'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Examples'}}, 'description': 'One sense of an entry: the (HTML-stripped) Wiktionary definition line.'}, 'SearchLanguage': {'enum': ['non', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``non`` looks an Old Norse word up directly (any of its\nforms â\x80\x94 an inflected query resolves via cached paradigms). ``eng`` searches in\nreverse: the English Wiktionary page for the query word lists per-sense Old\nNorse translations, and each distinct lemma is then looked up normally.'}, 'TranslationTerm': {'type': 'object', 'title': 'TranslationTerm', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'description': 'Wiktionary page title â\x80\x94 the lemma itself.'}, 'gender': {'type': 'string', 'title': 'Gender', 'default': '', 'description': "Grammatical gender as marked, e.g. 'n'."}, 'display': {'type': 'string', 'title': 'Display', 'default': '', 'description': 'Rendered form when it differs from the title.'}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "Usage qualifier as marked, e.g. 'poetic'; else empty."}}, 'description': 'One Old Norse word a translations table offers for an English sense.\n``word`` is the Wiktionary page title (what an ``eng`` search re-searches and\nwhat ``norse_get_inflections`` needs).'}, 'InflectionHandle': {'type': 'object', 'title': 'InflectionHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/NorseNominalParadigm'}, {'$ref': '#/$defs/NorseVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'discriminator': {'mapping': {'verbal': '#/$defs/NorseVerbalParadigm', 'nominal': '#/$defs/NorseNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, 'description': 'The full paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap.'}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'Nearby headword / hint.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'Wiktionary page title â\x80\x94 the lemma itself.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': 'Part-of-speech hint.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Part-of-speech section, e.g. 'verb', 'noun'."}}, 'description': 'A structured anchor for fetching a full paradigm: feed ``entry_id`` (the page\ntitle) + ``word_class`` (the POS section) to ``norse_get_inflections`` â\x80\x94 or ask\n``search`` to include the table inline (``forms``).'}, 'NorseNumberForms': {'type': 'object', 'title': 'NorseNumberForms', 'properties': {'plural': {'type': 'string', 'title': 'Plural', 'default': ''}, 'singular': {'type': 'string', 'title': 'Singular', 'default': ''}}, 'description': "A declension cell: the two number forms of one case key. Forms are verbatim\nnormalized Old Norse; alternates stay comma-separated as Wiktionary renders\nthem. A number the table doesn't give (defective paradigms) is an empty\nstring."}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Norse entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Old Norse section, no table, or\nthe page doesn't exist). ``found`` is False and there is no body."}, 'TranslationSense': {'type': 'object', 'title': 'TranslationSense', 'required': ['sense'], 'properties': {'sense': {'type': 'string', 'title': 'Sense', 'description': 'The sense gloss the source table carries.'}, 'terms': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationTerm'}, 'title': 'Terms'}}, 'description': 'One English sense (a translations table) and the Old Norse terms it offers.'}, 'NorseVerbalParadigm': {'type': 'object', 'title': 'NorseVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Mood and tense (lower-case: 'indicative present', 'subjunctive past', 'imperative present'; the mediopassive table's keys are prefixed â\x80\x94 'mediopassive indicative past') â\x86\x92 person and number ('first singular' â\x80¦ 'third plural') â\x86\x92 the form. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Norse entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite form ('infinitive', 'present participle', 'past participle'; mediopassive-prefixed for that voice) â\x86\x92 {'form': <the form>}.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Conjugation of a verb, grouped the way Wiktionary's tables are: finite cells\nkeyed by mood and tense â\x86\x92 person-and-number â\x86\x92 form, plus the non-finite forms\n(infinitive and the participles). The mediopassive voice renders as its own\ntable and its keys carry a 'mediopassive ' prefix; active keys are bare."}, 'NorseNominalParadigm': {'type': 'object', 'title': 'NorseNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key (lower-case: 'nominative', 'genitive', â\x80¦; nouns prefix the definiteness â\x80\x94 'indefinite nominative'; adjectives prefix the caption-derived declension class/degree and suffix the gender â\x80\x94 'strong nominative feminine') â\x86\x92 its singular/plural forms, in table order.", 'additionalProperties': {'$ref': '#/$defs/NorseNumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Norse entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Declension of a noun/adjective/etc.: case key â\x86\x92 {singular, plural}.\n\nNoun tables split by definiteness, folded into the key as a prefix:\n'indefinite nominative', 'definite genitive'. Adjective tables split by gender\n(suffixed: 'nominative feminine') and come one per declension class and degree,\nfolded in as a caption-derived prefix: 'strong nominative feminine',\n'weak superlative accusative neuter', 'comparative dative masculine'.\n``category`` discriminates this from the verbal and not-found shapes â\x80\x94 switch\non it before reading the body."}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched. For an eng query, True means Old Norse translations were found â\x80\x94 entries may still be empty when none of them could be expanded (see translations).'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Norse entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/InflectionHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'translations': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationSense'}, 'title': 'Translations', 'description': 'Populated only for eng queries (always [] for non): the Old Norse terms each English sense translates to, in sense order. Entries/handles below are the expanded dictionary entries of those terms.'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': 'The original inflected query when resolved; else empty. non queries only â\x80\x94 always empty for eng results.'}, 'search_method': {'enum': ['direct', 'lemma_index', 'translations'], 'type': 'string', 'title': 'Search Method', 'default': 'direct', 'description': "How the match was found: 'direct' = the query itself matched; 'lemma_index' = an inflected form resolved via a previously cached paradigm; 'translations' = an English query resolved via Wiktionary translation tables."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': 'The lemma actually searched when resolved; else empty. non queries only â\x80\x94 always empty for eng results.'}, 'forms_truncated': {'type': 'integer', 'title': 'Forms Truncated', 'default': 0, 'description': 'How many handles did NOT get an inline table because the per-search cap was reached.'}, 'translations_truncated': {'type': 'integer', 'title': 'Translations Truncated', 'default': 0, 'description': 'How many distinct translated lemmas were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).'}}, 'description': 'The result of a dictionary search.'}
scythian_get_descendants
Get a Proto-Scythian entry's descendants
Fetch the full descendants payload — etymology, glosses and the reflex tree (Sarmatian→Alanic→Ossetian, Saka→Khotanese) — for a lemma identified by a search result's descendant handle (entry_id + word_class). Use this only when a search ran without inline payloads or left a match un-expanded — a default search already returns each match's payload inline. Returns Markdown plus the payload as structuredContent with the shape {"result": <payload>} per the declared outputSchema — switch on result.category ('descendants' | 'not_found') before reading the body. Content from en.wiktionary.org (CC BY-SA 4.0).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'scythian_get_descendantsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'maxLength': 80, 'minLength': 1, 'description': "The bare lemma (no asterisk) from a search result's descendant handle, e.g. 'tiÉ£ri', 'baga' â\x80\x94 a typed leading asterisk is tolerated."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z ]+$', 'maxLength': 24, 'minLength': 1, 'description': "The part-of-speech section from a search result's descendant handle, e.g. 'noun', 'adjective', 'proper noun'."}}}
Schéma de sortie
{'type': 'object', '$defs': {'DescendantNode': {'type': 'object', 'title': 'DescendantNode', 'required': ['language'], 'properties': {'form': {'type': 'string', 'title': 'Form', 'default': '', 'description': 'The reflex as printed (asterisk kept on reconstructions); may be empty for a branch header or a transliteration-only term.'}, 'children': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantNode'}, 'title': 'Children'}, 'language': {'type': 'string', 'title': 'Language', 'description': "Language name as printed, e.g. 'Alanic'."}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "How the word travelled or which variety carries it, e.g. 'borrowed', 'Digor'; empty for plain inheritance."}, 'transliteration': {'type': 'string', 'title': 'Transliteration', 'default': '', 'description': "Romanization as printed beside the form, e.g. 'cirǧ'."}}, 'description': 'One node of a descendants tree: a reflex of the Proto-Scythian lemma in a\ndescendant (or borrowing) language, with its own descendants nested below.\n``form`` keeps the asterisk on reconstructed reflexes (``*Ä\x87irÉ£``) and may be\nempty for a branch header (``Ossetian`` above its dialect lines) or a term\nWiktionary records only in transliteration ("script needed").'}, 'DescendantsNotFound': {'type': 'object', 'title': 'DescendantsNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'No Proto-Scythian entry for this page/POS (no such page, no Proto-Scythian\nsection, or nothing parseable in it). ``found`` is False and there is no body.'}, 'ScythianDescendants': {'type': 'object', 'title': 'ScythianDescendants', 'required': ['entry_id', 'word_class'], 'properties': {'tree': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantNode'}, 'title': 'Tree', 'description': 'The descendants tree in page order; empty when the entry records no reflexes.'}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'glosses': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Glosses', 'description': "The entry's English glosses â\x80\x94 also what an eng search matches."}, 'category': {'type': 'string', 'const': 'descendants', 'title': 'Category', 'default': 'descendants'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The bare lemma (page-title tail, no asterisk).'}, 'headword': {'type': 'string', 'title': 'Headword', 'default': '', 'description': "The headword as printed, asterisk included: '*tiÉ£ri'."}, 'etymology': {'type': 'string', 'title': 'Etymology', 'default': '', 'description': "The entry's etymology line, plain text; may be empty."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "The part-of-speech section, e.g. 'noun'."}}, 'description': "One entry's descendants payload: the headword, its English glosses and the\nreflex tree. ``tree`` MAY be empty â\x80\x94 the entry exists but Wiktionary records no\nreflexes â\x80\x94 while ``glosses`` still feed the English-query reverse index.\n``category`` discriminates this from the not-found shape â\x80\x94 switch on it before\nreading the body."}}, 'title': 'scythian_get_descendantsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/ScythianDescendants'}, {'$ref': '#/$defs/DescendantsNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'not_found': '#/$defs/DescendantsNotFound', 'descendants': '#/$defs/ScythianDescendants'}, 'propertyName': 'category'}}}}
scythian_search
Look a Proto-Scythian word up
Look a Proto-Scythian lemma up on Wiktionary and return its senses plus its full descendants payload — the reconstructed etymology and the reflex tree down to Ossetian and Khotanese, attested scholarship, not invention. Plain ASCII spellings are folded to the reconstruction's diacritics and the result notes the resolution. With search_language='eng' the query is an English word instead: the result lists the lemmas whose glosses match it (the translations block) plus their expanded entries. Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Results are cached server-side; first-time queries reach the live upstream politely and calls are rate limited — on a rate-limit error, wait a few seconds and retry. Content is from en.wiktionary.org (CC BY-SA 4.0 — attribute and share alike if republished).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['xsc', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': "The query language. ``xsc`` (ISO 639-3 Scythian; Wiktionary's entry code is\n``xsc-pro``) looks a Proto-Scythian lemma up directly â\x80\x94 ASCII spellings are\nfolded (``tigri`` finds ``*tiÉ£ri``) via the reverse index. ``eng`` searches in\nreverse: the English query is matched against the indexed glosses of all\nlemmas, and each match is then looked up normally."}}, 'title': 'scythian_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 80, 'minLength': 1, 'description': "The word to look up, in the language search_language names. Scythian (default): a SINGLE Proto-Scythian lemma â\x80\x94 plain ASCII works ('tigri' finds *tiÉ£ri: macrons and carons are folded, and É£â\x86\x92g, δâ\x86\x92d, βâ\x86\x92b, É\x99â\x86\x92e, θâ\x86\x92t or th), with or without the reconstruction asterisk. English (search_language='eng'): the English word whose Proto-Scythian equivalents you want â\x80\x94 matched against every entry's glosses."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': 'Optional override for how many descendants payloads to expand this call (0â\x80\x9312). On an uncached query each payload is one politely paced upstream fetch, so high values on cold queries are slow. Omit for the server default.'}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full descendants payload â\x80\x94 etymology, glosses and the reflex tree down to Ossetian and Khotanese â\x80\x94 is returned INLINE in ONE call, no follow-up scythian_get_descendants. Set false for a cheap screen of which entries exist. Bounded by a per-search cap â\x80\x94 use max_forms to adjust per call. For eng queries this governs the expanded entries; the matched-lemmas list itself is always returned."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'xsc', 'description': "Language the query word is in: 'xsc' (default) looks the Proto-Scythian lemma up directly; 'eng' finds the lemmas whose English glosses match the query (the local gloss index â\x80\x94 reconstructed languages have no translation tables) and returns their full entries. Glosses are in English either way."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'senses': {'type': 'array', 'items': {'$ref': '#/$defs/Sense'}, 'title': 'Senses'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Bare lemma â\x80\x94 feed to scythian_get_descendants.'}, 'headword': {'type': 'string', 'title': 'Headword', 'description': 'The reconstructed headword, asterisk included.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': 'POS section â\x80\x94 feed to scythian_get_descendants.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': ''}}, 'description': "One Proto-Scythian entry on the page: the reconstructed headword (asterisk\nincluded) with one part-of-speech section's senses."}, 'Sense': {'type': 'object', 'title': 'Sense', 'required': ['gloss'], 'properties': {'gloss': {'type': 'string', 'title': 'Gloss'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Examples'}}, 'description': 'One sense of an entry: the (HTML-stripped) Wiktionary definition line.'}, 'DescendantNode': {'type': 'object', 'title': 'DescendantNode', 'required': ['language'], 'properties': {'form': {'type': 'string', 'title': 'Form', 'default': '', 'description': 'The reflex as printed (asterisk kept on reconstructions); may be empty for a branch header or a transliteration-only term.'}, 'children': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantNode'}, 'title': 'Children'}, 'language': {'type': 'string', 'title': 'Language', 'description': "Language name as printed, e.g. 'Alanic'."}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "How the word travelled or which variety carries it, e.g. 'borrowed', 'Digor'; empty for plain inheritance."}, 'transliteration': {'type': 'string', 'title': 'Transliteration', 'default': '', 'description': "Romanization as printed beside the form, e.g. 'cirǧ'."}}, 'description': 'One node of a descendants tree: a reflex of the Proto-Scythian lemma in a\ndescendant (or borrowing) language, with its own descendants nested below.\n``form`` keeps the asterisk on reconstructed reflexes (``*Ä\x87irÉ£``) and may be\nempty for a branch header (``Ossetian`` above its dialect lines) or a term\nWiktionary records only in transliteration ("script needed").'}, 'SearchLanguage': {'enum': ['xsc', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': "The query language. ``xsc`` (ISO 639-3 Scythian; Wiktionary's entry code is\n``xsc-pro``) looks a Proto-Scythian lemma up directly â\x80\x94 ASCII spellings are\nfolded (``tigri`` finds ``*tiÉ£ri``) via the reverse index. ``eng`` searches in\nreverse: the English query is matched against the indexed glosses of all\nlemmas, and each match is then looked up normally."}, 'TranslationTerm': {'type': 'object', 'title': 'TranslationTerm', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'description': "The bare Proto-Scythian lemma, e.g. 'tiÉ£ri'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': "The lemma's part-of-speech section, e.g. 'adjective'."}}, 'description': 'One Proto-Scythian lemma the gloss index offers for an English query.\n``word`` is the bare lemma (what an ``eng`` search re-searches and what\n``scythian_get_descendants`` needs).'}, 'TranslationSense': {'type': 'object', 'title': 'TranslationSense', 'required': ['sense'], 'properties': {'sense': {'type': 'string', 'title': 'Sense', 'description': 'The matched English gloss key â\x80\x94 the query.'}, 'terms': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationTerm'}, 'title': 'Terms'}}, 'description': "One English query sense and the Proto-Scythian lemmas whose glosses match\nit. Matching is by the local gloss index (built from every entry's glosses) â\x80\x94\nWiktionary's translation tables exclude reconstructed languages, so there is no\nper-sense table to mine; the single sense carries the query itself."}, 'DescendantsHandle': {'type': 'object', 'title': 'DescendantsHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/ScythianDescendants'}, {'$ref': '#/$defs/DescendantsNotFound'}], 'discriminator': {'mapping': {'not_found': '#/$defs/DescendantsNotFound', 'descendants': '#/$defs/ScythianDescendants'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, 'description': "The full descendants payload, populated when a search is asked to include it; None when not requested or beyond the cap. (Proto-Scythian has no inflection tables â\x80\x94 this 'forms' slot carries descendants.)"}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'Nearby headword / hint.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The bare lemma â\x80\x94 the page-title tail, no asterisk.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': 'Part-of-speech hint.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Part-of-speech section, e.g. 'noun', 'adjective'."}}, 'description': "A structured anchor for fetching one entry's descendants: feed ``entry_id``\n(the bare lemma) + ``word_class`` (the POS section) to\n``scythian_get_descendants`` â\x80\x94 or ask ``search`` to include the tree inline\n(``forms``)."}, 'DescendantsNotFound': {'type': 'object', 'title': 'DescendantsNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': 'No Proto-Scythian entry for this page/POS (no such page, no Proto-Scythian\nsection, or nothing parseable in it). ``found`` is False and there is no body.'}, 'ScythianDescendants': {'type': 'object', 'title': 'ScythianDescendants', 'required': ['entry_id', 'word_class'], 'properties': {'tree': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantNode'}, 'title': 'Tree', 'description': 'The descendants tree in page order; empty when the entry records no reflexes.'}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'glosses': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Glosses', 'description': "The entry's English glosses â\x80\x94 also what an eng search matches."}, 'category': {'type': 'string', 'const': 'descendants', 'title': 'Category', 'default': 'descendants'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'The bare lemma (page-title tail, no asterisk).'}, 'headword': {'type': 'string', 'title': 'Headword', 'default': '', 'description': "The headword as printed, asterisk included: '*tiÉ£ri'."}, 'etymology': {'type': 'string', 'title': 'Etymology', 'default': '', 'description': "The entry's etymology line, plain text; may be empty."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "The part-of-speech section, e.g. 'noun'."}}, 'description': "One entry's descendants payload: the headword, its English glosses and the\nreflex tree. ``tree`` MAY be empty â\x80\x94 the entry exists but Wiktionary records no\nreflexes â\x80\x94 while ``glosses`` still feed the English-query reverse index.\n``category`` discriminates this from the not-found shape â\x80\x94 switch on it before\nreading the body."}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched. For an eng query, True means the gloss index named Proto-Scythian lemmas â\x80\x94 entries may still be empty when none of them could be expanded (see translations).'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Proto-Scythian reconstruction entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/DescendantsHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'translations': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationSense'}, 'title': 'Translations', 'description': 'Populated only for eng queries (always [] for xsc): the Proto-Scythian lemmas whose glosses match the query. Entries/handles below are the expanded dictionary entries of those lemmas.'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': 'The original query when resolved via the index; else empty. xsc queries only â\x80\x94 always empty for eng results.'}, 'search_method': {'enum': ['direct', 'lemma_index', 'translations'], 'type': 'string', 'title': 'Search Method', 'default': 'direct', 'description': "How the match was found: 'direct' = the query itself matched; 'lemma_index' = an ASCII/diacritic-folded spelling resolved via the reverse index; 'translations' = an English query resolved via the local gloss index."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': 'The lemma actually searched when resolved; else empty. xsc queries only â\x80\x94 always empty for eng results.'}, 'forms_truncated': {'type': 'integer', 'title': 'Forms Truncated', 'default': 0, 'description': 'How many handles did NOT get an inline descendants payload because the per-search cap was reached.'}, 'translations_truncated': {'type': 'integer', 'title': 'Translations Truncated', 'default': 0, 'description': 'How many distinct matched lemmas were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).'}}, 'description': 'The result of a dictionary search.'}
slavonic_detransliterate
Find the Church Slavonic word(s) matching a Latin transliteration
Find the real Church Slavonic word(s) whose scientific-Latin transliteration matches this input — the inverse direction of `slavonic_transliterate`. Because transliterate is lossy, this is a LOOKUP against the words already in the dictionary cache: attested spellings (normalized OCS Cyrillic) come back as source=dictionary. If none match, a single best-effort reconstruction is returned (source=reconstruction, approximate=true) — a guess in normalized OCS Cyrillic, not attested, with no Glagolitic or liturgical marks. Coverage grows as words are cached, so an identical query may return a reconstruction now and a dictionary hit later.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'slavonic_detransliterateArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': 'Scientific-Latin transliteration of Church Slavonic to resolve back to real orthography. Returns the attested dictionary spelling(s) whose transliteration matches (source=dictionary, exact) â\x80\x94 several may match one ambiguous key. On a miss, a single best-effort reconstruction in normalized OCS Cyrillic (source=reconstruction, approximate=true), which is a guess: transliterate is lossy, so case, digraph boundaries (д+з vs Ñ\x95) and the оÑ\x83/Ñ¿ ligatures cannot be recovered, and no Glagolitic or liturgical marks are produced.'}}}
Schéma de sortie
{'type': 'object', '$defs': {'Candidate': {'type': 'object', 'title': 'Candidate', 'required': ['word', 'source'], 'properties': {'kind': {'anyOf': [{'enum': ['lemma', 'form'], 'type': 'string'}, {'type': 'null'}], 'title': 'Kind', 'default': None, 'description': 'For a lossy-family dictionary candidate, whether the word is a headword (lemma) or an inflected form. None for a reconstruction, and always None for Interslavic transliterate (which does not distinguish lemma from form).'}, 'word': {'type': 'string', 'title': 'Word', 'description': 'A real orthographic word (source=dictionary) or the best-effort reconstruction (source=reconstruction).'}, 'source': {'enum': ['dictionary', 'reconstruction'], 'type': 'string', 'title': 'Source', 'description': 'dictionary = an ATTESTED spelling recalled from the dictionary index (exact, no guessing); reconstruction = a best-effort algorithmic guess, returned only when no attested word matched (never emitted by Interslavic transliterate, which returns empty on a miss instead).'}}, 'description': 'One candidate spelling from a reverse-lookup surface (deromanize /\ndetransliterate, or Interslavic transliterate).'}}, 'title': 'DeromanizedText', 'required': ['candidates', 'approximate'], 'properties': {'candidates': {'type': 'array', 'items': {'$ref': '#/$defs/Candidate'}, 'title': 'Candidates'}, 'approximate': {'type': 'boolean', 'title': 'Approximate'}}, 'description': "The MCP-facing payload: candidates only. ``original`` is deliberately absent â\x80\x94\nthe MCP result reaches an LLM's context, so the raw caller text must not be echoed\n(mirrors ``RomanizedText``/``TransliteratedText``)."}
slavonic_get_inflections
Get a Church Slavonic inflection table
Fetch the full declension (nominals) or conjugation (verbs) table for a lemma identified by a search result's inflection handle (entry_id + word_class). Use this only when a search ran without inline forms or left a match un-expanded — a default search already returns each match's table inline. Returns Markdown plus the table as structuredContent with the shape {"result": <paradigm>} per the declared outputSchema — switch on result.category ('nominal' | 'verbal' | 'not_found') before reading the body. Content from en.wiktionary.org (CC BY-SA 4.0).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'slavonic_get_inflectionsArguments', 'required': ['entry_id', 'word_class'], 'properties': {'entry_id': {'type': 'string', 'title': 'Entry Id', 'maxLength': 80, 'minLength': 1, 'description': "The Wiktionary page title (the Cyrillic lemma) from a search result's inflection handle, e.g. 'богÑ\x8a', 'глаголаÑ\x82и'."}, 'word_class': {'type': 'string', 'title': 'Word Class', 'pattern': '^[a-z ]+$', 'maxLength': 24, 'minLength': 1, 'description': "The part-of-speech section from a search result's inflection handle, e.g. 'verb', 'noun', 'adjective'."}}}
Schéma de sortie
{'type': 'object', '$defs': {'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Church Slavonic entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Old Church Slavonic section, no\ntable, or the page doesn't exist). ``found`` is False and there is no body."}, 'SlavonicNumberForms': {'type': 'object', 'title': 'SlavonicNumberForms', 'properties': {'dual': {'type': 'string', 'title': 'Dual', 'default': ''}, 'plural': {'type': 'string', 'title': 'Plural', 'default': ''}, 'singular': {'type': 'string', 'title': 'Singular', 'default': ''}}, 'description': "A declension cell: the THREE number forms of one case â\x80\x94 Old Church Slavonic\nkeeps a full dual. Forms are verbatim normalized OCS Cyrillic; alternates stay\ncomma-separated as Wiktionary renders them. A number the table doesn't give\n(defective paradigms) is an empty string."}, 'SlavonicVerbalParadigm': {'type': 'object', 'title': 'SlavonicVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Tense/mood (lower-case, e.g. 'present', 'imperfect', 'aorist', 'imperative') â\x86\x92 person and number ('first singular' â\x80¦ 'third dual' â\x80¦ 'third plural') â\x86\x92 the form. Periphrastic rows (perfect, pluperfect, future) appear under the single key 'all'. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Church Slavonic entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite section ('infinitive', 'supine', 'l-participle') â\x86\x92 label ('form' for the single-form sections; 'singular masculine' etc. for the participle) â\x86\x92 the form.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Conjugation of a verb, grouped the way Wiktionary's table is: finite cells\nkeyed by tense/mood â\x86\x92 person-and-number â\x86\x92 form, plus the non-finite sections\n(infinitive, supine, l-participle and the other participles)."}, 'SlavonicNominalParadigm': {'type': 'object', 'title': 'SlavonicNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key (lower-case: 'nominative', 'genitive', â\x80¦; gender and short/long variant prefixed when the table splits by them) â\x86\x92 its singular/dual/plural forms, in table order.", 'additionalProperties': {'$ref': '#/$defs/SlavonicNumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Church Slavonic entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Declension of a noun/adjective/pronoun/etc.: case â\x86\x92 {singular, dual, plural}.\n\nGender-split tables (adjectives, pronouns, participles) carry the gender â\x80\x94 and,\nfor adjectives, the short/long variant â\x80\x94 in the key: 'nominative masculine',\n'long nominative feminine'. ``category`` discriminates this from the verbal and\nnot-found shapes â\x80\x94 switch on it before reading the body."}}, 'title': 'slavonic_get_inflectionsOutput', 'required': ['result'], 'properties': {'result': {'oneOf': [{'$ref': '#/$defs/SlavonicNominalParadigm'}, {'$ref': '#/$defs/SlavonicVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'title': 'Result', 'discriminator': {'mapping': {'verbal': '#/$defs/SlavonicVerbalParadigm', 'nominal': '#/$defs/SlavonicNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}}}
slavonic_search
Look a Church Slavonic word up
Look an Old Church Slavonic word up on Wiktionary and return its senses plus full declension/conjugation tables — attested content (singular, dual and plural), not invented. Any form of the word works; an inflected query is resolved to its lemma automatically via previously cached paradigms and the result notes the resolution. With search_language='eng' the query is an English word instead: the result lists its per-sense Old Church Slavonic equivalents (the translations block) plus their expanded entries. Returns Markdown plus the same result as structuredContent matching the declared outputSchema. Results are cached server-side; first-time queries reach the live upstream politely and calls are rate limited — on a rate-limit error, wait a few seconds and retry. Content is from en.wiktionary.org (CC BY-SA 4.0 — attribute and share alike if republished).
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$defs': {'SearchLanguage': {'enum': ['chu', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``chu`` looks an Old Church Slavonic word up directly\n(any of its forms â\x80\x94 an inflected query resolves via cached paradigms). ``eng``\nsearches in reverse: the English Wiktionary page for the query word lists\nper-sense Old Church Slavonic translations, and each distinct lemma is then\nlooked up normally.'}}, 'title': 'slavonic_searchArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 80, 'minLength': 1, 'description': "The word to look up, in the language search_language names. Church Slavonic (default): a SINGLE Old Church Slavonic word in Cyrillic, any form â\x80\x94 an inflected form ('бога') is resolved to its lemma ('богÑ\x8a') automatically via cached paradigms, and the result says so; normalized OCS spelling works best, but titlos/accents and modern-Cyrillic respellings (Ñ\x8b for ê\x99\x91) are folded. English (search_language='eng'): the English word whose Old Church Slavonic equivalents you want â\x80\x94 multiword entries like 'apple tree' work."}, 'max_forms': {'anyOf': [{'type': 'integer', 'maximum': 12, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Forms', 'default': None, 'description': 'Optional override for how many inflection tables to expand this call (0â\x80\x9312). On an uncached query each table is one politely paced upstream fetch, so high values on cold queries are slow. Omit for the server default.'}, 'include_forms': {'type': 'boolean', 'title': 'Include Forms', 'default': True, 'description': "When true (default), each match's full declension/conjugation table is returned INLINE â\x80\x94 usable cases/tenses (singular, dual AND plural) in ONE call, no follow-up slavonic_get_inflections. Set false for a cheap screen of which entries exist. Bounded by a per-search cap â\x80\x94 use max_forms to adjust per call. For eng queries this governs the expanded OCS entries; the per-sense translations list itself is always returned."}, 'search_language': {'$ref': '#/$defs/SearchLanguage', 'default': 'chu', 'description': "Language the query word is in: 'chu' (default) looks the Old Church Slavonic word up directly; 'eng' finds the OCS equivalents of an English word (per-sense, from Wiktionary's translation tables) and returns their full entries. Glosses are in English either way."}}}
Schéma de sortie
{'type': 'object', '$defs': {'Entry': {'type': 'object', 'title': 'Entry', 'required': ['headword'], 'properties': {'senses': {'type': 'array', 'items': {'$ref': '#/$defs/Sense'}, 'title': 'Senses'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'default': '', 'description': 'Page title â\x80\x94 feed to slavonic_get_inflections.'}, 'headword': {'type': 'string', 'title': 'Headword'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'default': '', 'description': 'POS section â\x80\x94 feed to slavonic_get_inflections.'}, 'part_of_speech': {'type': 'string', 'title': 'Part Of Speech', 'default': ''}}, 'description': "One Old Church Slavonic entry on the page: the headword (page title) with\none part-of-speech section's senses."}, 'Sense': {'type': 'object', 'title': 'Sense', 'required': ['gloss'], 'properties': {'gloss': {'type': 'string', 'title': 'Gloss'}, 'label': {'type': 'string', 'title': 'Label', 'default': ''}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Examples'}}, 'description': 'One sense of an entry: the (HTML-stripped) Wiktionary definition line.'}, 'SearchLanguage': {'enum': ['chu', 'eng'], 'type': 'string', 'title': 'SearchLanguage', 'description': 'The query language. ``chu`` looks an Old Church Slavonic word up directly\n(any of its forms â\x80\x94 an inflected query resolves via cached paradigms). ``eng``\nsearches in reverse: the English Wiktionary page for the query word lists\nper-sense Old Church Slavonic translations, and each distinct lemma is then\nlooked up normally.'}, 'TranslationTerm': {'type': 'object', 'title': 'TranslationTerm', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word', 'description': 'Wiktionary page title â\x80\x94 the Cyrillic lemma itself.'}, 'gender': {'type': 'string', 'title': 'Gender', 'default': '', 'description': "Grammatical gender as marked, e.g. 'f'."}, 'display': {'type': 'string', 'title': 'Display', 'default': '', 'description': 'Rendered form when it differs from the title.'}, 'qualifier': {'type': 'string', 'title': 'Qualifier', 'default': '', 'description': "Usage qualifier as marked, e.g. 'poetic'; else empty."}, 'transliteration': {'type': 'string', 'title': 'Transliteration', 'default': '', 'description': "Scientific romanization as Wiktionary prints it, e.g. 'voda'."}}, 'description': 'One Old Church Slavonic word a translations table offers for an English\nsense. ``word`` is the Wiktionary page title in Cyrillic (what an ``eng``\nsearch re-searches and what ``slavonic_get_inflections`` needs); only the Cyrillic\nscript row is read â\x80\x94 the parallel Glagolitic spelling is the same lemma on a\nsoft-redirect page, so surfacing it would only duplicate the term.'}, 'InflectionHandle': {'type': 'object', 'title': 'InflectionHandle', 'required': ['entry_id', 'word_class'], 'properties': {'forms': {'anyOf': [{'oneOf': [{'$ref': '#/$defs/SlavonicNominalParadigm'}, {'$ref': '#/$defs/SlavonicVerbalParadigm'}, {'$ref': '#/$defs/ParadigmNotFound'}], 'discriminator': {'mapping': {'verbal': '#/$defs/SlavonicVerbalParadigm', 'nominal': '#/$defs/SlavonicNominalParadigm', 'not_found': '#/$defs/ParadigmNotFound'}, 'propertyName': 'category'}}, {'type': 'null'}], 'title': 'Forms', 'default': None, 'description': 'The full paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap.'}, 'context': {'type': 'string', 'title': 'Context', 'default': '', 'description': 'Nearby headword / hint.'}, 'entry_id': {'type': 'string', 'title': 'Entry Id', 'description': 'Wiktionary page title â\x80\x94 the Cyrillic lemma itself.'}, 'pos_hint': {'type': 'string', 'title': 'Pos Hint', 'default': '', 'description': 'Part-of-speech hint.'}, 'word_class': {'type': 'string', 'title': 'Word Class', 'description': "Part-of-speech section, e.g. 'verb', 'noun'."}}, 'description': 'A structured anchor for fetching a full paradigm: feed ``entry_id`` (the page\ntitle) + ``word_class`` (the POS section) to ``slavonic_get_inflections`` â\x80\x94 or ask\n``search`` to include the table inline (``forms``).'}, 'ParadigmNotFound': {'type': 'object', 'title': 'ParadigmNotFound', 'required': ['entry_id', 'word_class'], 'properties': {'found': {'type': 'boolean', 'const': False, 'title': 'Found', 'default': False}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Church Slavonic entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'not_found', 'title': 'Category', 'default': 'not_found'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "No inflection table for this page/POS (no Old Church Slavonic section, no\ntable, or the page doesn't exist). ``found`` is False and there is no body."}, 'TranslationSense': {'type': 'object', 'title': 'TranslationSense', 'required': ['sense'], 'properties': {'sense': {'type': 'string', 'title': 'Sense', 'description': 'The sense gloss the source table carries.'}, 'terms': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationTerm'}, 'title': 'Terms'}}, 'description': 'One English sense (a translations table) and the OCS terms it offers.'}, 'SlavonicNumberForms': {'type': 'object', 'title': 'SlavonicNumberForms', 'properties': {'dual': {'type': 'string', 'title': 'Dual', 'default': ''}, 'plural': {'type': 'string', 'title': 'Plural', 'default': ''}, 'singular': {'type': 'string', 'title': 'Singular', 'default': ''}}, 'description': "A declension cell: the THREE number forms of one case â\x80\x94 Old Church Slavonic\nkeeps a full dual. Forms are verbatim normalized OCS Cyrillic; alternates stay\ncomma-separated as Wiktionary renders them. A number the table doesn't give\n(defective paradigms) is an empty string."}, 'SlavonicVerbalParadigm': {'type': 'object', 'title': 'SlavonicVerbalParadigm', 'required': ['entry_id', 'word_class', 'finite', 'nonfinite'], 'properties': {'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'finite': {'type': 'object', 'title': 'Finite', 'description': "Tense/mood (lower-case, e.g. 'present', 'imperfect', 'aorist', 'imperative') â\x86\x92 person and number ('first singular' â\x80¦ 'third dual' â\x80¦ 'third plural') â\x86\x92 the form. Periphrastic rows (perfect, pluperfect, future) appear under the single key 'all'. Alternates are comma-separated; an em-dash cell (no such form) is omitted.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Church Slavonic entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'verbal', 'title': 'Category', 'default': 'verbal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'nonfinite': {'type': 'object', 'title': 'Nonfinite', 'description': "Non-finite section ('infinitive', 'supine', 'l-participle') â\x86\x92 label ('form' for the single-form sections; 'singular masculine' etc. for the participle) â\x86\x92 the form.", 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'string'}}}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Conjugation of a verb, grouped the way Wiktionary's table is: finite cells\nkeyed by tense/mood â\x86\x92 person-and-number â\x86\x92 form, plus the non-finite sections\n(infinitive, supine, l-participle and the other participles)."}, 'SlavonicNominalParadigm': {'type': 'object', 'title': 'SlavonicNominalParadigm', 'required': ['entry_id', 'word_class', 'cases'], 'properties': {'cases': {'type': 'object', 'title': 'Cases', 'description': "Case key (lower-case: 'nominative', 'genitive', â\x80¦; gender and short/long variant prefixed when the table splits by them) â\x86\x92 its singular/dual/plural forms, in table order.", 'additionalProperties': {'$ref': '#/$defs/SlavonicNumberForms'}}, 'found': {'type': 'boolean', 'const': True, 'title': 'Found', 'default': True}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Church Slavonic entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'category': {'type': 'string', 'const': 'nominal', 'title': 'Category', 'default': 'nominal'}, 'entry_id': {'type': 'string', 'title': 'Entry Id'}, 'word_class': {'type': 'string', 'title': 'Word Class'}}, 'description': "Declension of a noun/adjective/pronoun/etc.: case â\x86\x92 {singular, dual, plural}.\n\nGender-split tables (adjectives, pronouns, participles) carry the gender â\x80\x94 and,\nfor adjectives, the short/long variant â\x80\x94 in the key: 'nominative masculine',\n'long nominative feminine'. ``category`` discriminates this from the verbal and\nnot-found shapes â\x80\x94 switch on it before reading the body."}}, 'title': 'SearchResult', 'required': ['query', 'language', 'found'], 'properties': {'found': {'type': 'boolean', 'title': 'Found', 'description': 'False when nothing matched. For an eng query, True means Old Church Slavonic translations were found â\x80\x94 entries may still be empty when none of them could be expanded (see translations).'}, 'query': {'type': 'string', 'title': 'Query'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Wiktionary, the free dictionary (en.wiktionary.org), Old Church Slavonic entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)'}, 'entries': {'type': 'array', 'items': {'$ref': '#/$defs/Entry'}, 'title': 'Entries'}, 'handles': {'type': 'array', 'items': {'$ref': '#/$defs/InflectionHandle'}, 'title': 'Handles'}, 'language': {'$ref': '#/$defs/SearchLanguage'}, 'translations': {'type': 'array', 'items': {'$ref': '#/$defs/TranslationSense'}, 'title': 'Translations', 'description': 'Populated only for eng queries (always [] for chu): the OCS terms each English sense translates to, in sense order. Entries/handles below are the expanded dictionary entries of those terms.'}, 'resolved_from': {'type': 'string', 'title': 'Resolved From', 'default': '', 'description': 'The original inflected query when resolved; else empty. chu queries only â\x80\x94 always empty for eng results.'}, 'search_method': {'enum': ['direct', 'lemma_index', 'translations'], 'type': 'string', 'title': 'Search Method', 'default': 'direct', 'description': "How the match was found: 'direct' = the query itself matched; 'lemma_index' = an inflected form resolved via a previously cached paradigm; 'translations' = an English query resolved via Wiktionary translation tables."}, 'resolved_lemma': {'type': 'string', 'title': 'Resolved Lemma', 'default': '', 'description': 'The lemma actually searched when resolved; else empty. chu queries only â\x80\x94 always empty for eng results.'}, 'forms_truncated': {'type': 'integer', 'title': 'Forms Truncated', 'default': 0, 'description': 'How many handles did NOT get an inline table because the per-search cap was reached.'}, 'translations_truncated': {'type': 'integer', 'title': 'Translations Truncated', 'default': 0, 'description': 'How many distinct translated lemmas were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).'}}, 'description': 'The result of a dictionary search.'}
slavonic_transliterate
Transliterate Church Slavonic to scientific Latin
Render Church Slavonic — Cyrillic or Glagolitic — in the scientific Latin transliteration Wiktionary uses (богъ → bogŭ, ⰱⱁⰳⱏ → bogŭ). Liturgical reading marks (titlos, accents) are dropped and late Church Slavonic spellings folded, so copied liturgical text works as-is. Returns Markdown plus the transliterated output as structuredContent matching the declared outputSchema. Pure local transform: no dictionary lookup and no network.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'slavonic_transliterateArguments', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'maxLength': 4000, 'minLength': 1, 'description': 'Church Slavonic text to transliterate â\x80\x94 Cyrillic and/or Glagolitic, one word or whole lines. Liturgical reading marks (titlos, accents, breathings) are dropped and late Church Slavonic spellings folded, so text copied from a liturgical source or a lyrics sheet works as-is.'}}}
Schéma de sortie
{'type': 'object', 'title': 'TransliteratedText', 'required': ['text'], 'properties': {'text': {'type': 'string', 'title': 'Text', 'description': 'The scientific transliteration.'}}, 'description': "The MCP-facing transliteration payload: the Latin output only. ``original``\nis deliberately absent â\x80\x94 like the Markdown render (see\n:func:`~livonian.languages.slavonic.render.transliteration_to_markdown`), the\nMCP result reaches an LLM's context, so the raw caller text must not be echoed\nthrough it. The JSON API's :class:`Transliteration` keeps the echo for\nprogrammatic callers."}
Ajouté
interslavic_transliterate
17 September 2026 12:38
Ajouté
interslavic_get_inflections
17 September 2026 12:38
Ajouté
interslavic_search
17 September 2026 12:38
Ajouté
anglo_deromanize
17 September 2026 12:38
Ajouté
anglo_romanize
17 September 2026 12:38
Ajouté
anglo_get_inflections
17 September 2026 12:38
Ajouté
anglo_search
17 September 2026 12:38
Ajouté
latgalian_deromanize
17 September 2026 12:38
Ajouté
latgalian_romanize
17 September 2026 12:38
Ajouté
latgalian_get_inflections
17 September 2026 12:38
Ajouté
latgalian_search
17 September 2026 12:38
Ajouté
norse_get_inflections
17 September 2026 12:38
Ajouté
norse_search
17 September 2026 12:38
Ajouté
scythian_get_descendants
17 September 2026 12:38
Ajouté
scythian_search
17 September 2026 12:38
Ajouté
slavonic_detransliterate
17 September 2026 12:38
Ajouté
slavonic_transliterate
17 September 2026 12:38
Ajouté
slavonic_get_inflections
17 September 2026 12:38
Ajouté
slavonic_search
17 September 2026 12:38
Ajouté
latin_lemmatize
17 September 2026 12:38
Ajouté
latin_get_inflections
17 September 2026 12:38
Ajouté
latin_search
17 September 2026 12:38
Ajouté
livonian_deromanize
17 September 2026 12:38
Ajouté
livonian_romanize
17 September 2026 12:38
Ajouté
livonian_get_inflections
17 September 2026 12:38
Ajouté
livonian_search
17 September 2026 12:38
Ajouté
dictionaries
17 September 2026 12:38