# Altalandi > Turn English or stiff/AI-translated Icelandic into Icelandic that reads as if a native wrote it — and prove the meaning didn't change. One HTTP call: `POST https://altalandi.is/api/v1/refine` with `Authorization: Bearer `. ("altalandi" = fluent / native-speaking.) Altalandi is a guarded pipeline, not a single model call: a frontier LLM rewrites to native register (L1), a rule proofreader cleans up (L2), then a validation gate checks meaning (back-translation plus deterministic checks on numbers, dates, negation, names and obligations) and refuses any rewrite it has found to be broken (L3). Every change comes back as a diff with the reason. ## Docs - [Agent guide](https://altalandi.is/agents.md): start here if you are an AI agent — how to call it, how to read the result correctly, a copy-paste wrapper and tool definition, limits, and what is logged. - [Full API docs (single file)](https://altalandi.is/llms-full.txt): the complete contract, request fields, response shape, status codes, examples, CLI and MCP — everything in one fetch. - [OpenAPI 3.1 spec](https://altalandi.is/api/openapi.json): machine-readable; point any OpenAPI-aware agent at it. - [Dev portal](https://altalandi.is/portal): create an account, mint/revoke keys, see usage. ## Quickstart - Endpoint: `POST https://altalandi.is/api/v1/refine` - Auth: header `Authorization: Bearer ` (mint one in the dev portal) - Body (only `text` is required): `{ "text": "...", "domain": "general|marketing|data-analysis|childrens-fiction", "register": "formal|neutral|warm", "preserveMeaning": true, "scoreNativeness": true }` - Returns: `{ "id", "output", "diffs", "quality": { "nativenessScore": 0-100 }, "meaningPreserved", "rewriteAttempted", "rejectionReason", "candidateVetoFired", "tier", "billedTier", "warnings" }` - Read the outcome, not one field. If `rejectionReason` is set (or `meaningPreserved` is `false`), the rewrite was refused and `output` is your original, unchanged — even when `meaningPreserved` is `true`, because a broken rewrite can be refused after the meaning check passed. If `rewriteAttempted` is `false`, the text needed no change. Otherwise only `meaningPreserved: true` is verified; `null` is unverified and must not be treated as a pass. For English input, a translation that still fails after one retry returns 502 with no text. Full procedure: https://altalandi.is/agents.md ## Terminal & agents - Connect once: `npx altalandi login` (opens altalandi.is to sign in or sign up and approve; stores the key and installs the Claude Code skill). Then `npx altalandi --review --file in.txt --out out.txt` (shows before, after, each change with its reason, cost and balance). `npx altalandi whoami` shows account and credit; `npx altalandi update` keeps it current. - MCP (Claude Code): `npx -y altalandi-mcp@latest` — exposes the `refine_icelandic` tool. - ChatGPT: make a connector link at https://altalandi.is/portal#chatgpt, then add it in ChatGPT (Developer mode, Plugins, Add, Create custom MCP server). - Free tier: 2,000 units a day per account on the standard writer, then prepaid credit (500 kr trial credit to start); the max writer is paid from credit. Codes in the portal can give free use, a discount or credit.