livonian
Grounds LLMs in the real Livonian dictionary: attested words, inflections, romanization.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"livonian": {
"url": "https://livonian.valksor.com/mcp"
}
}
}원격 엔드포인트
https://livonian.valksor.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (4)
🟢livonian_search(query, search_language, include_forms, max_forms)
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).
입력 스키마
{
"type": "object",
"properties": {
"query": {
"description": "A SINGLE content word, not a phrase. Exactly one word per call — even with several candidates or synonyms in mind, search them one at a time ('see', then 'look'), never combined into one query like 'see look'. Drop function words and infinitive markers — search 'to water' as 'water', 'the sea' as 'sea'. The dictionary matches one attested headword, so a multi-word query often returns nothing even when the word exists; search the main word first, then refine. May be Livonian, Latvian, Estonian, or English (e.g. 'jarā', 'away', 'sea'). Matching is bidirectional. An inflected Livonian form (search_language='liv') is resolved to its dictionary lemma automatically when the form is known — the result says so when that happened.",
"maxLength": 120,
"minLength": 1,
"title": "Query",
"type": "string"
},
"search_language": {
"$ref": "#/$defs/SearchLanguage",
"default": "eng",
"description": "Language your query word is in — selects which language the search matches against: 'eng' (default), 'liv', 'lat', or 'est'. For English→Livonian translation, keep 'eng'. Glosses are in English."
},
"include_forms": {
"default": true,
"description": "When true (default), each match's full inflection table is returned INLINE — 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 — use max_forms to raise or lower it for this call.",
"title": "Include Forms",
"type": "boolean"
},
"max_forms": {
"anyOf": [
{
"maximum": 12,
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional override for how many inflection tables to expand this call (0–12). Raise it to pull more tables in ONE call on a broad query, or set a small value to keep a broad query cheap. On an uncached query each table is fetched sequentially with polite pacing toward the upstream, so a high value on a cold broad query is slow — the bound limits upstream fan-out, not just response size. Omit to use the server's default cap.",
"title": "Max Forms"
}
},
"required": [
"query"
],
"$defs": {
"SearchLanguage": {
"description": "Which language the query word is matched against. Headwords come back in\nLivonian and glosses in English either way; this only selects the language the\nquery term is in. Codes are the site's own.",
"enum": [
"liv",
"lat",
"est",
"eng"
],
"title": "SearchLanguage",
"type": "string"
}
},
"title": "livonian_searchArguments"
}출력 스키마
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"language": {
"$ref": "#/$defs/SearchLanguage"
},
"found": {
"description": "False when nothing matched.",
"title": "Found",
"type": "boolean"
},
"handles": {
"items": {
"$ref": "#/$defs/InflectionHandle"
},
"title": "Handles",
"type": "array"
},
"entries": {
"description": "Structured dictionary entries: headword, pronunciation, part of speech, paradigm anchors, and senses with example sentences.",
"items": {
"$ref": "#/$defs/Entry"
},
"title": "Entries",
"type": "array"
},
"forms_truncated": {
"default": 0,
"description": "How many handles did NOT get an inline table because the per-search cap was reached. Refine the query or call livonian_get_inflections.",
"title": "Forms Truncated",
"type": "integer"
},
"search_method": {
"default": "direct",
"description": "How the match was found: 'direct' = the query itself matched; 'lemma_index' = the query was an inflected Livonian form, resolved to its dictionary lemma via the cached paradigm index and re-searched.",
"enum": [
"direct",
"lemma_index"
],
"title": "Search Method",
"type": "string"
},
"resolved_from": {
"default": "",
"description": "The original inflected query when search_method='lemma_index'; empty on a direct match.",
"title": "Resolved From",
"type": "string"
},
"resolved_lemma": {
"default": "",
"description": "The dictionary lemma actually searched when search_method='lemma_index'; empty on a direct match.",
"title": "Resolved Lemma",
"type": "string"
},
"source": {
"default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Vāvere, Signis, Damberg, Pētõr, Kurpniece, Milda, Balodis, Uldis, Tuisk, Tuuli, Kūla, Gita, Tomingas, Marili, Soosaar Sven-Erik, Sedláčková, Anna & Jurgenovskis, Toms. 2024. Livonian lexicographic database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
"title": "Source",
"type": "string"
}
},
"required": [
"query",
"language",
"found"
],
"$defs": {
"Entry": {
"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` — 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.",
"properties": {
"headword": {
"title": "Headword",
"type": "string"
},
"pronunciation": {
"default": "",
"description": "Phonetic form in braces, e.g. {äm}.",
"title": "Pronunciation",
"type": "string"
},
"part_of_speech": {
"default": "",
"description": "e.g. 'noun', 'verb', 'adjective'.",
"title": "Part Of Speech",
"type": "string"
},
"type_code": {
"default": "",
"description": "Paradigm type code, e.g. '99', '53a'.",
"title": "Type Code",
"type": "string"
},
"entry_id": {
"default": "",
"description": "Numeric word id for the forms endpoint.",
"title": "Entry Id",
"type": "string"
},
"word_class": {
"default": "",
"description": "Word-class code, e.g. 's', 'vt', 'adj'.",
"title": "Word Class",
"type": "string"
},
"senses": {
"items": {
"$ref": "#/$defs/Sense"
},
"title": "Senses",
"type": "array"
}
},
"required": [
"headword"
],
"title": "Entry",
"type": "object"
},
"Example": {
"description": "One usage example for a sense: the Livonian sentence and its English translation.\n``english`` is empty when the upstream entry gives the Livonian without a gloss.",
"properties": {
"livonian": {
"title": "Livonian",
"type": "string"
},
"english": {
"default": "",
"title": "English",
"type": "string"
}
},
"required": [
"livonian"
],
"title": "Example",
"type": "object"
},
"InflectionHandle": {
"description": "A reliable, structured anchor for fetching a full paradigm. Feed\n``entry_id`` + ``word_class`` to ``livonian_get_inflections`` — or ask ``search`` to\ninclude the table inline (``forms``).",
"properties": {
"entry_id": {
"description": "Numeric word id used by the forms endpoint.",
"title": "Entry Id",
"type": "string"
},
"word_class": {
"description": "Word-class code, e.g. 's', 'vi', 'vt', 'adj'.",
"title": "Word Class",
"type": "string"
},
"context": {
"default": "",
"description": "Nearby headword / entry text.",
"title": "Context",
"type": "string"
},
"pos_hint": {
"default": "",
"description": "Part-of-speech hint near the link.",
"title": "Pos Hint",
"type": "string"
},
"forms": {
"anyOf": [
{
"discriminator": {
"mapping": {
"nominal": "#/$defs/NominalParadigm",
"not_found": "#/$defs/ParadigmNotFound",
"verbal": "#/$defs/VerbalParadigm"
},
"propertyName": "category"
},
"oneOf": [
{
"$ref": "#/$defs/NominalParadigm"
},
{
"$ref": "#/$defs/VerbalParadigm"
},
{
"$ref": "#/$defs/ParadigmNotFound"
}
]
},
{
"type": "null"
}
],
"default": null,
"description": "The full inflection paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap; category 'none' when the word has no paradigm.",
"title": "Forms"
}
},
"required": [
"entry_id",
"word_class"
],
"title": "InflectionHandle",
"type": "object"
},
"NominalParadigm": {
"description": "Declension of a noun/adjective/numeral/pronoun: case → {singular, plural}.\n\n``category`` discriminates this from the verbal and not-found shapes — switch on it\nbefore reading the body.",
"properties": {
"category": {
"const": "nominal",
"default": "nominal",
"title": "Category",
"type": "string"
},
"entry_id": {
"title": "Entry Id",
"type": "string"
},
"word_class": {
"title": "Word Class",
"type": "string"
},
"found": {
"const": true,
"default": true,
"title": "Found",
"type": "boolean"
},
"cases": {
"additionalProperties": {
"$ref": "#/$defs/NumberForms"
},
"description": "Case name (English, lower-case) → its singular/plural forms, in paradigm order, e.g. 'nominative', 'genitive', 'partitive'.",
"title": "Cases",
"type": "object"
},
"source": {
"default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
"title": "Source",
"type": "string"
}
},
"required": [
"entry_id",
"word_class",
"cases"
],
"title": "NominalParadigm",
"type": "object"
},
"NumberForms": {
"description": "A nominal cell: the two number forms of one case. Livonian forms are verbatim.",
"properties": {
"singular": {
"title": "Singular",
"type": "string"
},
"plural": {
"title": "Plural",
"type": "string"
}
},
"required": [
"singular",
"plural"
],
"title": "NumberForms",
"type": "object"
},
"ParadigmNotFound": {
"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.",
"properties": {
"category": {
"const": "not_found",
"default": "not_found",
"title": "Category",
"type": "string"
},
"entry_id": {
"title": "Entry Id",
"type": "string"
},
"word_class": {
"title": "Word Class",
"type": "string"
},
"found": {
"const": false,
"default": false,
"title": "Found",
"type": "boolean"
},
"source": {
"default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
"title": "Source",
"type": "string"
}
},
"required": [
"entry_id",
"word_class"
],
"title": "ParadigmNotFound",
"type": "object"
},
"Polarity": {
"description": "A verbal cell: the two polarities of one person in one mood/tense. ``negative``\nis the ready-to-use form — the negation auxiliary (äb/äd/iz/algõ…) is already folded\nin (e.g. ``äb toup``), not orphaned in a separate column. Livonian forms are verbatim.",
"properties": {
"affirmative": {
"title": "Affirmative",
"type": "string"
},
"negative": {
"title": "Negative",
"type": "string"
}
},
"required": [
"affirmative",
"negative"
],
"title": "Polarity",
"type": "object"
},
"SearchLanguage": {
"description": "Which language the query word is matched against. Headwords come back in\nLivonian and glosses in English either way; this only selects the language the\nquery term is in. Codes are the site's own.",
"enum": [
"liv",
"lat",
"est",
"eng"
],
"title": "SearchLanguage",
"type": "string"
},
"Sense": {
"description": "One sense of a headword: its gloss and any usage examples. ``label`` is the\nupstream sense marker (``a)``, ``b)``) and is empty for a single, unlabelled sense.",
"properties": {
"label": {
"default": "",
"title": "Label",
"type": "string"
},
"gloss": {
"title": "Gloss",
"type": "string"
},
"examples": {
"items": {
"$ref": "#/$defs/Example"
},
"title": "Examples",
"type": "array"
}
},
"required": [
"gloss"
],
"title": "Sense",
"type": "object"
},
"VerbalParadigm": {
"description": "Conjugation of a verb, grouped the way the grammar is: finite moods/tenses by\nperson and polarity, plus the non-finite forms.\n\n``category`` discriminates this from the nominal and not-found shapes.",
"properties": {
"category": {
"const": "verbal",
"default": "verbal",
"title": "Category",
"type": "string"
},
"entry_id": {
"title": "Entry Id",
"type": "string"
},
"word_class": {
"title": "Word Class",
"type": "string"
},
"found": {
"const": true,
"default": true,
"title": "Found",
"type": "boolean"
},
"finite": {
"additionalProperties": {
"additionalProperties": {
"$ref": "#/$defs/Polarity"
},
"type": "object"
},
"description": "Mood/tense (English, lower-case: 'present', 'past', 'conditional', …) → pronoun (Livonian, verbatim: ma/sa/ta/mēg/tēg/ne) → {affirmative, negative}. The negative already includes its auxiliary.",
"title": "Finite",
"type": "object"
},
"nonfinite": {
"additionalProperties": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"description": "Non-finite section (English, lower-case: 'principal parts', 'participles') → form label (English) → the Livonian form.",
"title": "Nonfinite",
"type": "object"
},
"source": {
"default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
"title": "Source",
"type": "string"
}
},
"required": [
"entry_id",
"word_class",
"finite",
"nonfinite"
],
"title": "VerbalParadigm",
"type": "object"
}
},
"description": "The result of a dictionary search.",
"title": "SearchResult"
}🟢livonian_get_inflections(entry_id, word_class)
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).
입력 스키마
{
"type": "object",
"properties": {
"entry_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "The word id from a search result's inflection handle. Accepts a number or a digit-string (e.g. 17746 or \"17746\").",
"title": "Entry Id"
},
"word_class": {
"description": "The word-class code from a search result's inflection handle (e.g. 's' = noun, 'adj' = adjective, 'vi' = intransitive verb, 'vt' = transitive verb).",
"maxLength": 8,
"minLength": 1,
"pattern": "^[a-z]+$",
"title": "Word Class",
"type": "string"
}
},
"required": [
"entry_id",
"word_class"
],
"title": "livonian_get_inflectionsArguments"
}출력 스키마
{
"type": "object",
"properties": {
"result": {
"discriminator": {
"mapping": {
"nominal": "#/$defs/NominalParadigm",
"not_found": "#/$defs/ParadigmNotFound",
"verbal": "#/$defs/VerbalParadigm"
},
"propertyName": "category"
},
"oneOf": [
{
"$ref": "#/$defs/NominalParadigm"
},
{
"$ref": "#/$defs/VerbalParadigm"
},
{
"$ref": "#/$defs/ParadigmNotFound"
}
],
"title": "Result"
}
},
"required": [
"result"
],
"$defs": {
"NominalParadigm": {
"description": "Declension of a noun/adjective/numeral/pronoun: case → {singular, plural}.\n\n``category`` discriminates this from the verbal and not-found shapes — switch on it\nbefore reading the body.",
"properties": {
"category": {
"const": "nominal",
"default": "nominal",
"title": "Category",
"type": "string"
},
"entry_id": {
"title": "Entry Id",
"type": "string"
},
"word_class": {
"title": "Word Class",
"type": "string"
},
"found": {
"const": true,
"default": true,
"title": "Found",
"type": "boolean"
},
"cases": {
"additionalProperties": {
"$ref": "#/$defs/NumberForms"
},
"description": "Case name (English, lower-case) → its singular/plural forms, in paradigm order, e.g. 'nominative', 'genitive', 'partitive'.",
"title": "Cases",
"type": "object"
},
"source": {
"default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
"title": "Source",
"type": "string"
}
},
"required": [
"entry_id",
"word_class",
"cases"
],
"title": "NominalParadigm",
"type": "object"
},
"NumberForms": {
"description": "A nominal cell: the two number forms of one case. Livonian forms are verbatim.",
"properties": {
"singular": {
"title": "Singular",
"type": "string"
},
"plural": {
"title": "Plural",
"type": "string"
}
},
"required": [
"singular",
"plural"
],
"title": "NumberForms",
"type": "object"
},
"ParadigmNotFound": {
"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.",
"properties": {
"category": {
"const": "not_found",
"default": "not_found",
"title": "Category",
"type": "string"
},
"entry_id": {
"title": "Entry Id",
"type": "string"
},
"word_class": {
"title": "Word Class",
"type": "string"
},
"found": {
"const": false,
"default": false,
"title": "Found",
"type": "boolean"
},
"source": {
"default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
"title": "Source",
"type": "string"
}
},
"required": [
"entry_id",
"word_class"
],
"title": "ParadigmNotFound",
"type": "object"
},
"Polarity": {
"description": "A verbal cell: the two polarities of one person in one mood/tense. ``negative``\nis the ready-to-use form — the negation auxiliary (äb/äd/iz/algõ…) is already folded\nin (e.g. ``äb toup``), not orphaned in a separate column. Livonian forms are verbatim.",
"properties": {
"affirmative": {
"title": "Affirmative",
"type": "string"
},
"negative": {
"title": "Negative",
"type": "string"
}
},
"required": [
"affirmative",
"negative"
],
"title": "Polarity",
"type": "object"
},
"VerbalParadigm": {
"description": "Conjugation of a verb, grouped the way the grammar is: finite moods/tenses by\nperson and polarity, plus the non-finite forms.\n\n``category`` discriminates this from the nominal and not-found shapes.",
"properties": {
"category": {
"const": "verbal",
"default": "verbal",
"title": "Category",
"type": "string"
},
"entry_id": {
"title": "Entry Id",
"type": "string"
},
"word_class": {
"title": "Word Class",
"type": "string"
},
"found": {
"const": true,
"default": true,
"title": "Found",
"type": "boolean"
},
"finite": {
"additionalProperties": {
"additionalProperties": {
"$ref": "#/$defs/Polarity"
},
"type": "object"
},
"description": "Mood/tense (English, lower-case: 'present', 'past', 'conditional', …) → pronoun (Livonian, verbatim: ma/sa/ta/mēg/tēg/ne) → {affirmative, negative}. The negative already includes its auxiliary.",
"title": "Finite",
"type": "object"
},
"nonfinite": {
"additionalProperties": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"description": "Non-finite section (English, lower-case: 'principal parts', 'participles') → form label (English) → the Livonian form.",
"title": "Nonfinite",
"type": "object"
},
"source": {
"default": "Ernštreits, Valts (ed. in chief), Viitso, Tiit-Rein, Kurpniece, Milda & Vāvere, Signis. 2024. Livonian morphology database. Riga: University of Latvia Livonian Institute. https://livonian.tech/ (CC BY-SA 4.0)",
"title": "Source",
"type": "string"
}
},
"required": [
"entry_id",
"word_class",
"finite",
"nonfinite"
],
"title": "VerbalParadigm",
"type": "object"
}
},
"title": "livonian_get_inflectionsOutput"
}🟢livonian_romanize(text)
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.
입력 스키마
{
"type": "object",
"properties": {
"text": {
"description": "Livonian text to reduce to clean, pronounceable ASCII. Strips macrons, diacritics and capitals (ā→aa, š→sh, õ→u), softens a palatalized consonant (ņ ļ ŗ ţ ḑ) only before a vowel (ņ+a→nya, else ikšiggiņ→ikshiggin), and hyphenates the broken tone (si'zzõl→siz-zul) and long-vowel diphthong glides (kīen→kee-en). Pass a word, phrase, or several lines.",
"maxLength": 4000,
"minLength": 1,
"title": "Text",
"type": "string"
}
},
"required": [
"text"
],
"title": "livonian_romanizeArguments"
}출력 스키마
{
"type": "object",
"properties": {
"text": {
"description": "The romanized ASCII output.",
"title": "Text",
"type": "string"
}
},
"required": [
"text"
],
"description": "The MCP-facing romanization payload: the ASCII output only. ``original`` is\ndeliberately absent — like the Markdown render (see\n:func:`~livonian.languages.livonian.render.romanization_to_markdown`), the MCP\nresult reaches an LLM's context, so the raw caller text must not be echoed\nthrough it. The JSON API's :class:`Romanization` keeps the echo for\nprogrammatic callers.",
"title": "RomanizedText"
}🟢livonian_deromanize(text)
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.
입력 스키마
{
"type": "object",
"properties": {
"text": {
"description": "Romanized (clean-ASCII) Livonian text to resolve back to real orthography. Returns the attested dictionary spelling(s) whose romanization matches (source=dictionary, exact) — several may match one ambiguous key. On a miss, a single best-effort reconstruction (source=reconstruction, approximate=true), which is a guess: romanize is lossy, so case, stød, palatalization and macron length cannot be recovered.",
"maxLength": 4000,
"minLength": 1,
"title": "Text",
"type": "string"
}
},
"required": [
"text"
],
"title": "livonian_deromanizeArguments"
}출력 스키마
{
"type": "object",
"properties": {
"candidates": {
"items": {
"$ref": "#/$defs/Candidate"
},
"title": "Candidates",
"type": "array"
},
"approximate": {
"title": "Approximate",
"type": "boolean"
}
},
"required": [
"candidates",
"approximate"
],
"$defs": {
"Candidate": {
"description": "One candidate spelling from a reverse-lookup surface (deromanize /\ndetransliterate, or Interslavic transliterate).",
"properties": {
"word": {
"description": "A real orthographic word (source=dictionary) or the best-effort reconstruction (source=reconstruction).",
"title": "Word",
"type": "string"
},
"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).",
"enum": [
"dictionary",
"reconstruction"
],
"title": "Source",
"type": "string"
},
"kind": {
"anyOf": [
{
"enum": [
"lemma",
"form"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"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).",
"title": "Kind"
}
},
"required": [
"word",
"source"
],
"title": "Candidate",
"type": "object"
}
},
"description": "The MCP-facing payload: candidates only. ``original`` is deliberately absent —\nthe MCP result reaches an LLM's context, so the raw caller text must not be echoed\n(mirrors ``RomanizedText``/``TransliteratedText``).",
"title": "DeromanizedText"
}커뮤니티
증거