altalandi-mcp
v0.10.1
Published
MCP server exposing Altalandi (native-Icelandic refinement) as a tool for Claude Code and any MCP client.
Maintainers
Readme
altalandi-mcp
An MCP server that exposes Altalandi, native-Icelandic refinement with a meaning-preservation check, as a tool any MCP client can call. stdio transport.
Set up (Claude Code or Codex)
Connect this computer once. This opens altalandi.is, you approve, and the key is stored locally. You never copy it:
npx altalandi loginThen add the server. No key goes into any config file; the server reads the
one altalandi login stored:
claude mcp add altalandi -s user -- npx -y altalandi-mcp@latest # Claude Code
codex mcp add altalandi -- npx -y altalandi-mcp@latest # Codex@latest makes each new session use the newest version. Added it without
@latest before? npx keeps its first copy: remove the server
(claude mcp remove altalandi) and add it again with the line above.
Ask for Icelandic and mention Altalandi, e.g. "Write this in proper Icelandic
with Altalandi." The agent calls the refine_icelandic tool.
Without altalandi login (CI, services, other clients)
Set ALTALANDI_API_KEY in the server's environment, from your host's secret
manager. It takes precedence over a stored login. Mint a key at
https://altalandi.is/stjornbord/forritarar. Never commit a plaintext key in MCP JSON.
{ "mcpServers": { "altalandi": { "command": "npx", "args": ["-y", "altalandi-mcp@latest"] } } }The tool
refine_icelandic({ text, domain?, register?, sourceLang?, minOutputChars?, maxOutputChars?, report? }) returns two
parts. The first is one Markdown block: the verdict and nativeness score, the text
before and after (Fyrir / Eftir), a numbered list of changes with their reasons,
why a rewrite was refused if it was, and what the call cost with the balance and
free characters left (Kostnaður). The second is the full refined text to apply. The
tool tells the agent to show the block to you as it is after every call, so you see
what changed and what it cost in the terminal or the editor, not only on the website.
domain:general|marketing|data-analysis|childrens-fictionregister:formal|neutral|warmsourceLang:auto|en|isminOutputChars/maxOutputChars: optional minimum and hard maximum for one complete field, including spaces and line breaks (browser UTF-16 length). Always pass stated application/form limits, e.g.maxOutputChars: 1000. These also apply toproofread_icelandic. Do not split a bounded field into separate calls. If length and meaning cannot both be preserved, the server fails without charging; it never truncates the text or invents facts to fill it.noStore:truemeans Altalandi never keeps this text. Otherwise free use (the free daily characters) is kept, with personal data scrubbed, to improve the service; paid use only with consent (privacy).report:truealso writes./altalandi-reports/altalandi-<time>-<id>.md(input, output, every change with its reason and layer, warnings, verdict). Default: on whenALTALANDI_REPORT=1. Reports contain the text, so they are opt-in.
Meaning guarantee: on Icelandic input where the rewrite can't be verified to preserve meaning, the tool returns the original unchanged and flags it, never a silent change.
UI strings: the Hnappasafn
lookup_icelandic_ui_strings({ strings, minConfidence? }) looks up English buttons,
menus and labels (up to 200, 80 characters each) in the
Hnappasafn: the Icelandic that Icelandic websites
and open-source software (Firefox, Thunderbird, LibreOffice, Android) actually use,
served only where the sources agree. No model runs, so it is instant and the same
string gets the same Icelandic across a project. A string the Hnappasafn lacks is
tried in the Orðakista, our Icelandic naming bank: the Icelandic names of countries,
languages, currencies, units, months, weekdays and cities (Germany → Þýskaland,
km with its case forms), and Icelandic place names with their case forms and á/í
(Akureyri → á Akureyri, til Akureyrar). 1 kr per string found, from the
free daily characters first; a string not found costs nothing, nor does a place
whose preposition is marked uncertain. Translate the misses with refine_icelandic.
With sourceLang: "is" the strings are Icelandic labels to check. Each comes
back established (the form Icelandic software uses: keep it), minority (use
best: „Hvernig það virkar“ → „Svona virkar þetta“) or unknown (not charged).
ordakista_search({ query, limit?, drawers? }) searches the whole Orðakista, in
English or Icelandic: UI text, names, places in any case form, computing terms and
stiff phrasings. Exact matches come first, then prefixes and one-letter typos.
Free, rate-limited.
Háttur: ask first
When the account's setting is „Spyrja fyrst“ (ask), refine_icelandic,
proofread_icelandic and lookup_icelandic_ui_strings need approved: true. The
agent sets it only after the user agreed in the conversation, and one yes covers
the task. Without it the tool sends nothing, charges nothing and says why. The
setting is read from the account (cached a minute); ALTALANDI_MODE overrides it.
Change it with npx altalandi mode or at altalandi.is/stjornbord/stillingar#gervigreind.
Proofreading
proofread_icelandic({ text, suggestions?, minPrecision?, noStore? }) fixes only
proven errors in Icelandic you wrote (punctuation, word boundaries, a misspelt word
one slip from the right one) and keeps your wording. Everything else comes back as
numbered suggestions, each with its reason and, when known, how sure it is. The
agent shows you each one and applies only those you accept.
suggestions:offer(default: you choose) |apply(the kinds of suggestion measured right at leastminPrecisionof the time are applied and listed; the rest are offered) |off(only the safe fixes).minPrecision: 0.5 to 0.99, default 0.9. A suggestion with a digit, or one that changes a name, is never applied unasked.
Then record_suggestion_decisions({ resultId, decisions }) tells Altalandi which
suggestions you used or ignored (numbers only, no text, free). That is how the
suggestions get better.
Only meaning preserved is a verified result. MEANING UNVERIFIED means the
check did not run or could not complete; review that output before use. API
warnings are included under a clear Warnings: section in the tool's result.
The Altalandi card
In hosts that render MCP Apps (Claude Desktop, claude.ai), results appear in an
Altalandi card: the text with a copy button, whether the meaning check passed,
each change with its reason, and for proofreading each suggestion with Nota
and Hunsa buttons. The card records the decisions itself. Terminals (Claude
Code, Codex) get the same text as before. The server offers the card as the
resource ui://altalandi/result-v1.html; both tools return its data as
structuredContent.
Config
| env | default | purpose |
|-----|---------|---------|
| ALTALANDI_API_KEY | (the key from altalandi login) | your key (Bearer) |
| ALTALANDI_CONFIG_DIR | %APPDATA%\altalandi / ~/.config/altalandi | where altalandi login stored it |
| ALTALANDI_BASE_URL | https://altalandi.is/api | API base (override for self-hosting) |
| ALTALANDI_REPORT | — | 1 = write a report for every call |
| ALTALANDI_REPORT_DIR | ./altalandi-reports (the server's working folder) | where reports go |
Each API request has a fixed 300-second deadline, including the response body, so a stalled provider cannot leave the tool hanging.
Cost
Every account gets a free daily allowance of characters on the standard writer
(GET /v1/pricing has the figure); past that, calls are paid from prepaid credit in krónur, and a new account
also starts with 500 kr. of trial credit. See https://altalandi.is/verd.
MIT licensed. Requires Node ≥ 18.
