Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ESTNLTK_MCP_AUTH_TOKENNoBearer token for authentication. Required for bearer mode if not in public mode. Must be at least 16 characters.
ESTNLTK_MCP_PUBLIC_MODENoSet to '1' to enable public mode (no bearer token required). Default mode is bearer.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
tokenizeA

Split Estonian text into sentences and words (every token in order, punctuation included).

analyze_morphologyB

Morphological analysis of each word (punctuation omitted): word, lemma, partofspeech (pos_tag's tags), form (Vabamorf code, "" if uninflected), root (_ joins compound parts), ending ("0" = none).

Present only when they apply: form_estonian (the form's Estonian name), clitic, root_tokens (compound parts), analyses_count (>1: still ambiguous in context), usage_note (archaic, foreign, abbreviation, interjection, proper-noun) and the more precise usage_note_estonian (often names the neutral word), indeclinable: true (keeps its base form before a noun: täis, tuntud, täitmata; check it before declining a noun phrase).

paradigmA

Inflection paradigm of one Estonian word from Vabamorf, which generates what is possible, not necessarily idiomatic.

Nominals: up to 28 forms, 14 cases in singular and plural (iga has no plural), plus the short illative adt (majja beside majasse) where it exists. Verbs: about 39 common forms, impersonal included, not all Vabamorf can make. A word that does not inflect gets empty forms and a summary_estonian saying why.

forms entries: form (Vabamorf code), form_estonian (its Estonian name), surface. A list surface holds correct variants, any built on this paradigm's own stem first (raamatutele before the literary raamatuile).

Both illatives are correct and the short illative is often the commoner: never "correct" one into the other. adt is usually spelled like the singular partitive sg p (vend: venda), so a surface in this table does not confirm its case in a sentence.

paradigm_count > 1 means several inflection types (kott: koti or kota): forms is the first-ranked, named by paradigm_key (its singular genitive), and the rest are in other_paradigms, which give form_estonian only for a code forms lacks. Read ambiguity_estonian before quoting a form. Pass an inflected form (koti) to select the type you mean.

lemmatizeA

Lemma (dictionary form) of each word, from its most likely analysis. Punctuation is omitted.

pos_tagA

Part-of-speech tag of each word (most likely reading); punctuation omitted.

S noun, H proper noun, V verb, A adjective (C comparative, U superlative, G indeclinable), P pronoun, D adverb, K adposition, J conjunction, N cardinal, O ordinal, I interjection, Y abbreviation or symbol (§, €), X verb-bound word (plehku), Z a word of 40+ characters, too long for Vabamorf to analyse.

spell_checkA

Spell-check Estonian text. Lists only the misspelled tokens, each occurrence in text order: text, spelling: false, and suggestions when Vabamorf has any. An empty list means every word passed.

Passing proves only that a word is well-formed: Vabamorf accepts any valid compound, even an invented one (toortõlkeoht). Check a compound you coined with check_compound_familiarity.

syllabifyA

Lowercased syllables of one Estonian word; quantity is the välde (1-3), accent 1 marks stress. Vabamorf's guesser syllabifier: it can err even on common words.

named_entitiesA

People, places and organisations (type PER, LOC, ORG) with character offsets start and end. text is the span as written, often inflected (Tallinnas).

find_related_wordsA

Nearest neighbours of an Estonian word in a fastText model (Common Crawl and Wikipedia), ranked by cosine score. Unlike synonyms (same meaning, WordNet), these are words used in similar contexts: near-synonyms, related concepts, inflections of the input itself (lemmatize to dedupe) and sometimes antonyms (tark: loll). Senses are not separated: lahe gets whichever of "bay" and "cool" dominates the corpus. Any string, even a typo, gets neighbours.

synonymsA

Estonian WordNet synsets for a word, one per sense, each with lemmas (the synonyms), any definition and any examples. synset_count is the total before max_synsets cuts the list.

For "is this the right word here?", read each definition against the context, not just lemmas. A gloss naming a medium, field or material limits where the word fits: korpus is "kirjaliku või suulise teksti elektrooniline kogu", so a set of images is not a korpus, while andmestik has no such limit. Register is a different question: check_officialese, classify_register.

check_compoundsA

Flags compounds wrongly written as two words (liitsõnaõigekiri): kooli maja → koolimaja.

Matches a curated list of about 30 common splits, so a hit is reliable but most compounds are not covered.

check_punctuationA

Flags a missing comma:

  • comma-before-clause-conjunction: before et, kuna, sest, kuigi, kuid, vaid, nagu, mistõttu, millepärast or kuhu. A comma before a pair (nii et, ilma et) passes, as does et after ja, ning, ega or ehk; nagu is flagged only before a clause with a verb.

  • comma-after-subordinate-clause: closing a clause opened after a comma by a relative word (kes, mis, kus) or a subordinator (et, kui, kas), before the main clause's verb: Mees, kes seal seisis oli minu isa → , oli; before its subject instead when that stands right before the verb and cannot be the clause's own (Hommikul, kui ärkasin päike juba paistis → , päike). Otherwise that is where the comma goes at the latest; it may belong earlier, before a longer fronted subject or inside a split phrase.

  • comma-before-ja-after-subordinate-clause: before ja or ning when the main clause goes on after a kes or mis clause, told by the verbs' person: Juhtisin projekti, mis kestis kaks aastat ja koolitasin → , ja.

The last two read only words that cannot be anything but a verb, so a verb that is also a noun (tuli, sai, lõppes) is missed; ei in ei ... ega and in ei tea kus, a -vad participle after olema (kes olid sobivad) and on in an English name (video on demand) are not counted. A line break, a table cell edge (| or a tab), an HTML tag, an arrow or a quotation mark ends the clause. Not checked: the comma before kui, mis or kes (it depends on meaning), apposition commas, dashes, colons. A comma before ja in a list and a letter's greeting and closing commas are check_translationese's.

check_hyphenationA

Line-break positions in one Estonian word (poolitamine); use only when line breaks matter. breaks: character offsets at syllable boundaries, at least 2 characters from either end; preferred: the word with each break marked ·. Compound seams, which Estonian prefers, are among the breaks but not singled out: choose the seam yourself (kooli·maja). A break can also split one vowel off a compound part (maao-manik in maa·o·ma·nik); skip those.

check_numbersA

Flags number-writing slips (numbrite õigekirjutus):

  • decimal-separator: 3.14 → 3,14; skips kell 10.30, 14.05, punkt 3.2, Python 3.12, but flags a bare 10.30.

  • thousands-separator: 1,250 → 1250, 1,500,000 → 1 500 000 (EKI groups from five digits; ideally non-breaking spaces, suggestion has plain ones). If 1,250 was meant as the decimal 1,25, keep it.

  • approximate-tilde: 50 → u 50 (Umbes 50 at a sentence start; umbes and ligikaudu also fit). A style hint for general prose: EKI keeps the tilde for variants (mina ~ ma), so a spaced tilde after a word, ≈, code (inline, fenced or indented), paths, versions and ranges (510) are not flagged.

  • month-year-digits: 09.2016 → sept 2016, a date rather than a decimal; EKI finds the month in words clearer. A one-digit month (1.2019) is left alone, as it may be a rate, and 10 to 12 after a rate word or currency pair in the clause (kurss 11.2050, EUR/SEK, keskmine, koefitsient) is a decimal. Inflect a full month name to fit the sentence (alates märtsist 2019); abbreviations need no ending.

  • range-spacing: 2020 - 2024 → 2020-2024, 5 - 10 päeva → 5-10. Only a spaced keyboard hyphen between plain numbers; typeset EKI text uses the mõttekriips, also unspaced. Skips sums and expressions after =, scores, code, phone numbers, a label and its value (ülesanne 1 - 10 punkti), ends containing a space (9000 - 10 000), ordinal and season ranges (2015.-2019. aastal, 2019/2020), and month.year ends.

  • percent-sign-suffix: 20%-line → 20% or 20-protsendiline; case endings (10%-st, 5%-ni) are fine.

Spelling out small numbers is not checked.

check_capitalizationA

Flags words wrongly capitalized mid-sentence (algustäheortograafia):

  • weekday, month, nationality: lowercase except at sentence start (esmaspäeval, jaanuaris, eestlane).

  • language-adjective: a country name before a language or culture noun is lowercase (eesti keel, vene kultuur). On its own it is the country (Eesti, Eestis) and is not flagged.

Sentence-initial words and all-caps acronyms are skipped. A hit that opens a line, list item or quotation, or sits in a proper name (Eesti Keele Instituut), is usually false. English title case in headings is check_translationese's title-case.

check_compound_familiarityA

Attestation check for Estonian compound nouns; use it on compounds you coined.

A compound is attested when its lemma is in the fastText 100K-word corpus vocabulary (in_vocab), Estonian WordNet (in_wordnet) or the legal terms list (neighbour_quality.legal_term). Read attested first: false is normal for correct specialist words, not evidence of invention, and never on its own a reason to rewrite.

is_suspect is narrow: unattested, and the nearest neighbour is a real word scoring under 0.55 (mõtteliin). Judge a flag from neighbours (unattested entries only): coherent related words mean the word is real. neighbour_quality.signal: "none": the nearest neighbour is scrape junk, so there is no verdict. Recall is low on purpose: some coinages pass, and so does any stilted compound (check register with check_officialese).

in_domain_glossary: true (only with a server glossary): the organisation's own word, so treat it as real. For your own glossary use check_domain_terms. Proper nouns are skipped.

check_domain_termsA

Reports compounds no lexicon or domain glossary vouches for, in Estonian you wrote about an organisation's own systems.

A compound is reported when it is unattested (see check_compound_familiarity) and absent from the server's glossary and identifier list and your glossary. A reported compound is not necessarily coined: it is only not the organisation's word, and may be ordinary Estonian (vagunisõit is). Where it names something the organisation has a term or identifier for, use theirs; otherwise leave it.

suggestions are glossary terms SPELLED alike, not synonyms: use one only if it names the same thing. contains_glossary_term is the term the compound is built on (vagunireisitabel on vagunireis): ordinary Estonian, not to be shortened to the term; ask only whether the thing it names has its own term.

The hosted server has no glossary: pass yours in glossary. Without one this is the unattested list, never on its own a reason to rewrite. Proper nouns are skipped.

check_abbreviation_hyphenationA

Flags an ending that starts with l written straight onto an all-capital abbreviation: OÜle → OÜ-le, ÜROlt → ÜRO-lt, THIl → THI-l. EKI finds the hyphen clearer there. Every other hyphenless form (ELi, ELis, APIga, MCPst, ASile) is as correct as the hyphenated one and is not flagged: keep the text's own choice.

A stem read with a final consonant also needs the stem vowel i (ASle → AS-ile, ELlt → EL-ilt); a Roman ordinal up to XXXIX before a noun or adjective in the same case drops the ending (XIIl sajandil → XII).

Any all-capital stem counts, known or not; mixed-case ones (SaaS, PhD, iOS) and chloride formulas (HCl, NH4Cl) are not checked.

check_object_caseA

Flags a direct object in the wrong case (käändeõpetus): a common noun in nominative or genitive (form) after

  • negation-requires-partitive: negation (ei söönud leib → leiba), or

  • partitive-only-verb: verb, one of nine verbs such as armastama, vajama and ootama that always take a partitive object.

The negation rule skips any sentence containing olema (pole, ei ole, pole näinud). The fix is the partitive of lemma in the number form shows; take it from paradigm. With no parser, a hit may be a subject or an adverbial, so treat it as worth a second look.

Two more rules check the government of teavitama (keda + millest) and teatama (kellele + millest), and add a suggestion:

  • teavitama-allative-recipient: teavitama or informeerima, or their noun teavitamine or informeerimine (verb), with the person or body in the allative (teavitas politseile; word is the allative phrase).

  • teatama-partitive-person: teatama with a partitive personal pronoun (Teatame Teid, et ...).

The fix is either teavitama + partitive (teavitas politseid) or teatama + allative (teatas politseile); for the noun, Rahapesu Andmebüroo teavitamine or teatamine Rahapesu Andmebüroole. Recall is low by design: a clause that already has a partitive object (teavitab õpilastele hindeid), an allative before the verb, an allative that a participle, adjective or action noun governs (teavitada isikut talle seatud piirangust), one whose head noun is not a person or body (kolimisest teisele korrusele), the experiencer of an adverb or a translative (meile teadaolevalt, kõigile üllatuseks) and an allative after a heading line are not flagged, and neither is a partitive pronoun that a following participle governs (Teatame Teid puudutavatest muudatustest: grammatical, but Teatame Teile ... reads better).

check_redundancyA

Flags redundant doubling (liiasus, pleonasm):

  • doubled-also: two "also" particles together (samuti ka, ka samuti, ühtlasi ka); keep one.

  • double-superlative: kõige before an absolute adjective (kõige optimaalsem, "most optimal"); drop kõige.

  • fixed-pleonasm: a short curated list (ajaline periood, väike nüanss, üldine konsensus).

Each issue's explanation gives the reason in Estonian. Conservative: it misses much redundancy a native speaker would hear.

check_legaleseA

Plain-language aid for Estonian statutes and contracts; rewrites must keep the legal meaning.

issues: archaic filler and stock phrases with a plainer suggestion, and over-long or comma-heavy sentences to split. terms_of_art: legal terms (first use per lemma) to keep verbatim, never swapped for a general synonym. Starter lexicons: an empty or short issues list does not mean the text is plain, and an unlisted word can still be a term of art. For reports and business prose use check_officialese.

check_defined_termsA

Maps defined terms and cross-references in a long Estonian legal document.

defined_terms: each (edaspidi «X») term. total_occurrences counts exact-form, case-sensitive matches, the definition included, so it misses inflected uses: verify a defined-but-unused issue before acting. cross_references: §, lõige, punkt and artikkel mentions, not validated. issues: terms defined twice or unused.

common_legal_usageA

Standard legal collocations for an Estonian word, from an index of Riigi Teataja legislation (the bundled one: five core codes). Use it instead of inventing legal phrasing.

common_before / common_after: the commonest lemmas of the nearest content word on each side, with counts; inflect them to fit. A frequency signal, not a rule. found: false says only that the index lacks the word, not that it is wrong.

check_styleA

Heuristic Estonian style metrics; no cliche detection.

  • repetition: content lemmas used threshold+ times (scales with length), with character offsets.

  • passive_voice: umbisikuline tegumood share of verbs (attributive -tud participles go to attributive_excluded). Marketing copy: aim under 15%; under 5% may read forceful. Reports: over 40% is the clearest kantseliit sign (see check_officialese).

  • sentence_length: words per sentence; a stddev under 30% of the mean reads monotonous. News and web text: at most 10 to 15 words a sentence (the state's web-writing guide). Measured averages: e-mail about 9, news about 14, statutes about 25.

  • hedging: share of words on a short fixed list (vist, pigem, ehk); over 5% reads wishy-washy, 0% does not rule hedging out.

check_officialeseA

Flag Estonian kantseliit in reports, academic and business prose; statutes and contracts go to check_legalese, which protects terms of art.

Issue rules: impersonal-voice (ratio 0.4+, 4+ verbs), nominalisation (4+ -mine nouns per 100 words, positioned at the first), noun-density (noun/verb 2.5+, weakest: weigh it last), clause-stacking (3+ subordinate-clause openers in a sentence), long-sentence (25+ words), officialese-filler, officialese-phrase, poolt-calque, kusin-tapsemalt, calque-phrase. impersonal-voice and noun-density are document-wide (position 0). 'läbi viima' in the conduct sense is an officialese-phrase in any form (viidi läbi, on läbi viinud, viis uuringu läbi), and läbiviimine, läbiviija, läbiviidud, läbiviidav, läbi viimine an officialese-filler, suggesting korraldama / tegema (pidama for a meeting) in the same form, with the words between kept (viis uuringu läbi → korraldas uuringu); routes and threaded objects (Rada viib läbi metsa, Kaabel tuleb läbi viia seinast, kaabli läbiviimine), time spans (päev läbi), postpositions, the numeral viis and the fugue term are skipped, and the 'läbi suruma' sense is not told apart. A thing carried through with no route word (Kohver viidi läbi) is still flagged. kusin-tapsemalt is a sentence-initial 'Küsin/Küsime täpsemalt, kas …' in a letter; a plan to ask someone else matches too unless a reporting-back verb follows (…, ja annan teada; …, ja võtan teiega ühendust), and quoted speech, a dialogue-dash line and a quoted e-mail line ('>') are skipped. Both are style hints, not errors. calque-phrase is a translated stock phrase of letters: sealhulgas, kuid mitte ainult (and eelkõige, kuid mitte ainult, where only the tail goes); antud juhul / hetkel / olukorras, not the participle (on antud olukorras, kus ...); adresseerima a problem, not a mail item; ärge kõhelge ... võtmast, rewritten with its own verb; kiri leiab teid hästi; tänan teid teie ... eest; vaatan edasi koostööle, with an awaited event (not vaatas edasi merele); Palun leidke manuses, not a search instruction (Palun leidke manusest oma nimi). Leiate manusest and läbi e-posti are accepted Estonian and not flagged. metrics.nominalisations gives each -mine noun's verb, a particle verb written apart (läbivaatamine → läbi vaatama, tagaajamine → taga ajama), a noun + verb compound by its head (riskihindamine → hindama, sisuloomine → looma), and no verb when none is known. The split 'läbi viimine' counts as läbiviimine. Nouns lexicalised as things (teadmised, pakkumine, kohtumine, ettevõtmine and their compounds) and -misi adverbs (vaikimisi) are not counted.

Precision-first starter lexicons: no issues is not proof the text is plain.

check_translationeseA

Flag English structure that makes Estonian read as translated. Run it on Estonian you wrote or translated.

Rules: oma-possessive (saatke meile teie andmed → oma andmed), pronoun-after-verb (lähtume me → lähtume), subject-pronoun (a third of the sentences open with Ma or Me; once), verb-second (Kui ..., me saadame → saadame), saama-future (saab olema → on), maks-infinitive (ettepanek võtmaks → võtta), maks-purpose (Tagamaks → et tagada), mitte-des (Mitte leides → Leidmata), tanu-negative (tänu + a bad cause → tõttu), english-phrase (minu arvamusel), greeting-punctuation (Hea Mari, → Hea Mari!; Tere Mari → Tere, Mari), closing-comma (Lugupidamisega,), serial-comma (teed, ja küpsiseid), title-case (Meie Teenused Ja Hinnad).

maks-purpose and subject-pronoun are style hints. Third-person possessives, negated verbs and questions are not checked. Accepted Estonian is never flagged (aset leidma, rolli mängima, Eile ma läksin, a capital Teie to one reader). Letter formulas such as Palun leidke manuses are check_officialese's.

check_term_consistencyA

Flag a document that names one thing several ways (andmestik, teadusandmestik, pildiandmestik).

Rules: shared-compound-head (a bare noun plus a compound on it, or 3+ lemmas sharing a head) and shared-wordnet-synset (two of the 40 most frequent nouns share a WordNet synset). Each group gives variants with counts and dominant, the most used. Some groups are distinct concepts and the tool does not pick the right term: read each first.

degraded: true means WordNet is missing and the synset rule did not run: no groups is then no proof of consistency.

With a domain glossary (the server's or glossary), variants carry in_domain_glossary, and a group's only listed variant is its preferred term, whatever dominant says (several listed suggest distinct concepts).

Misses synonyms sharing neither head nor synset (korpus / andmestik): compare their synonyms definitions.

classify_registerA

Heuristic Estonian register score: a directional hint, not a verdict. Most everyday prose scores neutral, and address forms (sina/teie) are not scored.

score runs from -1 (colloquial) to 1 (formal); tier_estonian is the correct Estonian label to quote (formaalne, never *formalne). consistency.is_mixed: formal and colloquial markers both occur, which jars even when the tier is neutral. structure adds up to 0.4 (applied) for umbisikuline tegumood and noun density, from 25 words up and never on net-colloquial text. For a per-issue kantseliit breakdown use check_officialese.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 28 tools

Disambiguation4/5

Tool boundaries are unusually well signposted: descriptions explicitly cross-reference siblings (find_related_words vs synonyms, check_officialese vs check_legalese, check_style vs check_translationese, check_compound_familiarity vs check_domain_terms). The only residual overlap is among the register/prose tools (check_style, check_officialese, classify_register) which touch similar metrics like impersonal voice and noun density, but the text guides selection by genre.

Naming Consistency4/5

Mostly a predictable snake_case scheme with check_* for every linting tool, which makes the large check family scannable. Deviations are minor: bare-verb analysis tools (tokenize, lemmatize, syllabify, paradigm) and the reversed spell_check rather than check_spelling.

Tool Count3/5

At 28 tools this is on the heavy side, though the domain (Estonian morphology, orthography, style, legal drafting) is genuinely broad and each check targets a distinct phenomenon. Still, the surface could likely be consolidated (e.g. merging the many narrow legal checks) without losing capability.

Completeness4/5

Covers the full language-tooling lifecycle: tokenize, morph analysis, lemma/POS, paradigm generation, syllabify, hyphenation, spell check, NER, plus a deep set of orthography/style/legal checks. Minor gaps remain, e.g. no syntax/agreement parsing and no general grammar-check for sentence structure beyond the curated rule lists.

Maintenance

ActivityActive
ResponsivenessWithin a week