Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add silly-geese/estonian-mcp --skill estonian-writing-assistantgit clone --depth 1 https://github.com/silly-geese/estonian-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/silly-geese/estonian-mcp/estonian-writing-assistant)<a href="https://agentmods.dev/skills/silly-geese/estonian-mcp/estonian-writing-assistant"><img src="https://agentmods.dev/badge/skills/silly-geese/estonian-mcp/estonian-writing-assistant/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/silly-geese/estonian-mcp/estonian-writing-assistant"><img src="https://agentmods.dev/badge/skills/silly-geese/estonian-mcp/estonian-writing-assistant.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00294 | $0.05605 |
| Opus 5 | $0.00147 | $0.02802 |
| Sonnet 5 | $0.00059 | $0.01121 |
| Haiku 4.5 | $0.00029 | $0.00560 |
Grade A, and why
estonian-writing-assistant scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 381 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Estonian writing assistant
Estonian has 14 cases, vowel harmony in compounds, productive subword morphology, and a quantity-grade system that's easy to get wrong. Models that haven't been heavily fine-tuned on Estonian will confidently hallucinate plausible-looking but incorrect inflections. This skill exists to prevent that: use the estonian-mcp tools as ground truth for any factual claim about an Estonian word.
The hard rule, applied throughout this skill:
Never assert an Estonian lemma, case form, conjugation, spelling, or compound split without verifying it with the MCP. If you're tempted to write "the partitive is X" or "this verb's stem is Y" from memory, stop and call the tool first.
Tools at a glance
| Tool | When to reach for it |
|---|---|
spell_check |
First pass on any Estonian text the user wrote. Cheapest validation. |
lemmatize |
Get dictionary forms — for vocabulary study, deduping word stems, citation. |
analyze_morphology |
Full analysis with case form, root, ending, compound parts, ambiguity count, and a usage flag (archaic / foreign / interjection / abbreviation / proper-noun). The authoritative tool when discussing grammar. |
paradigm |
Generates the full inflection paradigm for a word — all 14 cases for nouns plus the short illative where a word has one (majja beside majasse), ~39 forms for verbs. Use when the user asks "what's the X-case of Y" or wants to see every form. Don't try to recall paradigms from memory. |
pos_tag |
When you only need POS, e.g., filtering a list to nouns. |
tokenize |
Sentence + word boundaries. Useful before per-sentence operations. |
synonyms |
Same-meaning alternatives via Estonian WordNet. Returns synsets grouped by sense. |
find_related_words |
Semantically nearby words via fastText. Broader than synonyms — includes near-synonyms, related concepts, and (sometimes) antonyms. |
classify_register |
Heuristic formal/colloquial score with markers + consistency.is_mixed flag for register-mixed text (formal + colloquial markers in the same draft = jarring). |
check_style |
Four style metrics in one call — lemma-aware repetition (catches 'kasutab' / 'kasutamine' both under lemma 'kasutama'), Estonian passive-voice ratio (-takse/-ti/-tud family), sentence-length mean+stddev, hedging-word density. Use for newsletter / ad / email polish. |
check_redundancy |
Pleonasm / semantic-doubling check — flags samuti ka (also+also), kõige optimaalsem (most+optimal), and fixed redundant phrases. Run it before claiming a redundancy "the MCP can't catch" — it catches the common ones. |
check_object_case |
Käändeõpetus heuristic — catches the most common confidently-wrong Estonian: direct-object case after negation (must be partitive) and after partitive-only verbs (armastama, vihkama, vajama, …). Lexicon-based, no syntactic parser; only flags nouns AFTER the trigger so subject-noun false positives are minimal. |
check_abbreviation_hyphenation |
Lühendiortograafia — flags abbreviations carrying a case ending without the EKI-mandated hyphen (MCPst → MCP-st, OÜle → OÜ-le, APIga → API-ga). Uses Vabamorf's POS+form analysis to filter to actual abbreviations. |
check_compound_familiarity |
Calque-risk diagnostic — surfaces fastText nearest-neighbour data for each compound noun. Suspect flag = top similarity < 0.60, or a junk-dominated neighbour tail when that tail is decisive (top score also under 0.60, or the top neighbour is itself junk). Critically, it still flags some legitimate-but-uncommon compounds (small fastText vocab). Read the neighbours list to judge: subword-similar neighbours = likely calque; semantically coherent neighbours = real compound. Note the converse limit too: a compound that is merely stilted rather than invented (teadusandmestik) will pass — similarity can't judge register, so use check_officialese for that. Run on any Estonian compound you yourself produced (rather than verbatim user input). |
check_officialese |
Kantseliit check for non-legal prose — reports, academic writing, business copy, grant/R&D paperwork. Use this, not check_legalese, for anything that isn't a statute or contract: check_legalese's lexicon and 34-word gate are tuned for legislation and return nothing on report officialese. Gives nominalisation density with the verb to swap in (hindamine → hindama), correctly-counted umbisikuline tegumood, clause stacking, Estonian-calibrated sentence length, and admin filler. |
check_term_consistency |
One referent, one term. Run on any document longer than a couple of paragraphs: catches andmestik in §1, teadusandmestik in §2, pildiandmestik in §3. Reports per-variant counts so you can standardise on the dominant one. Read each group before rewriting — some are genuinely distinct concepts. |
check_capitalization |
Algustäheortograafia (initial-letter orthography) check per EKI Reeglid. Flags weekdays, months, nationalities, and language/culture adjectives wrongly capitalized mid-sentence. Run on every Estonian text you produce. |
check_compounds |
Liitsõnaõigekiri — flags common compound splits the model produces (kooli maja → koolimaja). Lexicon-based, phase 1. |
check_punctuation |
Kirjavahemärgid — flags missing commas before subordinating conjunctions (et, sest, kuna, kuid, vaid, nagu, …). Phase-1 scope: the comma-before-clause rule only. |
check_hyphenation |
Poolitamine — returns safe line-break positions for a word. Use only when typesetting/line-breaking matters; skip in normal writing. |
check_numbers |
Numbrite õigekirjutus — flags decimal-separator (period vs comma) and thousands-separator (comma vs space) violations. |
named_entities |
PER/LOC/ORG extraction. Useful for summarisation and content audit. |
syllabify |
Per-syllable breakdown with quantity + accent. Useful for slogan rhythm, song lyrics, or pronunciation guides. |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed e067a76c3b4f
- 12d ago First seen · 381 lines · 294 tokens per session scan A daafa804c763
estonian-writing-assistant is a skill published in the GitHub repository silly-geese/estonian-mcp (20 stars, last pushed yesterday), licensed Apache-2.0. It adds 294 tokens to every session and 5,605 once invoked, about $0.0015 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
opik-diagnose
Surface the Opik traces worth a developer's attention, ranked by signal — Diagnostics issues first, then errors, failed tool calls, latency, regressions, and low online-eval scores. With the Opik MCP connected it lists the project's agentinsightsissue entities, offers to turn Diagnostics on when the project has it…
client-scripts
Write ServiceNow client scripts (onLoad/onChange/onSubmit/onCellEdit) using gform, guser, GlideAjax, field visibility/mandatory toggles, and validation with debounced server calls.
split-to-prs
Split current work into small reviewable PRs. Use when the user asks to split a chat, set of changes, branch, or PR.
agreement-setup
Set up a bKash tokenized agreement for repeat charges and check its status.
planfix-api
A Planfix CRM integration for managing tasks and contacts. A CRM is a system for organizing customer and business relationships.
maya-shot-export
Pipeline stage — shot-level export: frame ranges, cameras, FBX / Alembic packaging for editorial. Use when packaging shot data for downstream departments. Not for full pipeline publish (maya-pipeline) or scene assembly (maya-scene-assembly).