Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

L10n.dev - AI Localization Agent

NPM · AI-L10N-MCP · SCANNED AUG 3

MCP Server that turns your AI agent into a localization expert with token-efficient i18n translation

Available components

+28 this week 79 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (97 of 101), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (97 of 101), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to l10n-dev/ai-l10n). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 20 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2811 tokens (~175/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
  • Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · ai-l10n-mcp

# add to Claude Code
claude mcp add l10n-dev-ai-l10n-mcp -- npx -y ai-l10n-mcp
# add to Codex CLI
codex mcp add l10n-dev-ai-l10n-mcp -- npx -y ai-l10n-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "l10n-dev-ai-l10n-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "ai-l10n-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add l10n-dev-ai-l10n-mcp --command npx --arg -y --arg ai-l10n-mcp
# ~/.hermes/config.yaml
mcp_servers:
  l10n-dev-ai-l10n-mcp:
    command: "npx"
    args: ["-y", "ai-l10n-mcp"]
// mcp.json
{
  "mcpServers": {
    "l10n-dev-ai-l10n-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ai-l10n-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +3
    • Stability: unverified → 0.23 functional
  • 2 Aug 26 +51
    • Known CVEs: unverified → partial security
    • Install scripts: unverified → pass security
    • Provenance: unverified → pass security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • The attested source repository moved: l10n-dev/ai-l10n security
    • Security disclosure: fail → unverified functional
    • Tool coverage: 100 → unverified functional
    • Schema quality: 100 → unverified functional
    • License: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • MCP protocol: unverified → pass functional
    • Schema quality: unverified → good functional
    • Licence: MIT functional
  • 1 Aug 26 −8
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 −18
    • Malware scan: pass → unverified security
  • 27 Jul 26 51

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/[email protected]

Provenance verified

Ecosystem: npm · Outcome: verified

Reason: verified

Source repo:
l10n-dev/ai-l10n
Certificate issuer:
https://token.actions.githubusercontent.com
Certificate SAN:
https://github.com/l10n-dev/ai-l10n/.github/workflows/publish.yml@refs/heads/main
Rekor log index:
2164454762
Predicate type:
https://slsa.dev/provenance/v1
Subject digest:
sha512:cccbb4e1e37dfd3c3d626ff2987a9451b7ba7dcef65b15cf4b6636b0e81f196e0bdd3249401fdd272ad3bf0dea9b6125964cb6554a3a2978b08702649
Discovery method:
attestation_endpoint
Dependencies 97 packages

97 packages in the resolved dependency tree · 95 deprecated · 29 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 16 exposed · ~2,811 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
l10n_add_glossary_entry ~126

Add a term mapping to an existing glossary. Maps a source term to a preferred translation, with an optional context note for disambiguating polysemous terms (e.g. 'bank' = financial institution vs. river bank).

NameTypeReqDescription
contextstringDisambiguation note e.g. 'financial institution' to clarify the intended meaning
glossaryIdintegeryesNumeric ID of the glossary to add to
sourceTermstringyesTerm in the source language
targetTermstringyesPreferred translation of the term

No output schema declared.

No examples provided.

l10n_create_glossary ~133

Create a new empty glossary for a source→target language pair. After creating, use l10n_add_glossary_entry to add term mappings. Note: to auto-generate a glossary from a translation, use generateGlossary: true in l10n_translate_file instead.

NameTypeReqDescription
namestringyesDisplay name for this glossary e.g. 'My App German Glossary'
sourceLanguageCodestringyesSource language BCP-47 code e.g. 'en'
targetLanguageCodestringyesTarget language BCP-47 code e.g. 'de'

No output schema declared.

No examples provided.

l10n_create_instruction ~220

Create and save a new linguistic instruction for a source→target language pair. The instruction is stored in l10n.dev and applied automatically to future translations for that language pair (unless overridden per-request). Use this when the user wants to set a tone, style, or brand rule — for example after they answer the suggestion made during translation. Examples: - "Use formal tone (Sie, not du)" - "Keep product names Dashboard, Workspace, and Settings untranslated" - "Use simple, friendly language suitable for children"

NameTypeReqDescription
namestringOptional display name for this instruction
sourceLanguageCodestringyesSource language BCP-47 code e.g. 'en'
targetLanguageCodestringyesTarget language BCP-47 code e.g. 'de'
textstringyesThe instruction text e.g. 'Use formal tone (Sie, not du)'. Max 1000 characters. Use instructions for style/tone guidance. For specific term mappings, use glossaries instead.

No output schema declared.

No examples provided.

l10n_delete_glossary ~44

Permanently delete a glossary and all its term entries. This cannot be undone.

NameTypeReqDescription
glossaryIdintegeryesNumeric ID of the glossary to delete

No output schema declared.

No examples provided.

l10n_delete_glossary_entry ~51

Remove a single term mapping from a glossary.

NameTypeReqDescription
entryIdintegeryesNumeric ID of the entry to remove
glossaryIdintegeryesNumeric ID of the glossary

No output schema declared.

No examples provided.

l10n_delete_instruction ~52

Permanently delete a linguistic instruction. This cannot be undone. If the deleted instruction was active, no other instruction is automatically activated.

NameTypeReqDescription
instructionIdintegeryesNumeric ID of the instruction to delete

No output schema declared.

No examples provided.

l10n_detect_project_structure ~171

Scan an i18n source file to understand the project's localization structure. Returns: structure type (folder-based or file-based), source language code, all detected target languages, and the resolved target file path for each language (showing whether files already exist). Use this before translating or setting up automation to understand what source files and target languages are in place. Call with the path to the source language file (e.g. locales/en.json, app_en.arb, locales/en/common.json).

NameTypeReqDescription
sourceFilestringyesAbsolute or relative path to the i18n source file (e.g. './locales/en.json', './lib/l10n/app_en.arb', './locales/en/common.json'). This is the file in the source language from which translations are…

No output schema declared.

No examples provided.

l10n_get_api_key_status ~48

Check whether an l10n.dev API key is configured (via environment variable or stored config). Use this to diagnose authorization errors or to confirm the key is set up correctly.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

l10n_get_balance ~77

Check the remaining character balance for this l10n.dev account. Each translation consumes characters from the balance. Use this when the user asks how many characters they have left, or proactively if a translation result shows a low remaining balance. If balance is insufficient, suggest purchasing more characters at https://l10n.dev/#pricing

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

l10n_get_glossary ~58

Get the full details and all term entries of a specific glossary by ID. Use when the user wants to review or audit the terms in a glossary.

NameTypeReqDescription
glossaryIdintegeryesNumeric ID of the glossary to retrieve

No output schema declared.

No examples provided.

l10n_list_glossaries ~77

List all saved glossaries for this l10n.dev account. Each glossary maps source terms to preferred translations for a language pair. Active glossaries are applied automatically during translation. Call this when the user asks about their glossaries, or to check whether a glossary exists for a language pair before suggesting generateGlossary.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

l10n_list_instructions ~75

List all saved linguistic instructions for this l10n.dev account. Linguistic instructions guide AI translation style, tone, and brand voice (e.g. "Use formal tone", "Never translate the word Dashboard"). Call this before translating if the user hasn't specified tone preferences, to check whether instructions are already configured.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

l10n_set_api_key ~172

Store an l10n.dev API key locally in the user's home directory (~/.ai-l10n/config.json). Once stored, the key is used automatically by all l10n tools without needing to set L10N_API_KEY. Get a free API key at https://l10n.dev/ws/keys Use this when: - The user provides an API key and wants to save it - A translation fails with an authorization error and the user wants to persist their key Note: if L10N_API_KEY environment variable is set in the MCP config, that takes precedence over the stored key and this tool is not needed.

NameTypeReqDescription
apiKeystringyesThe l10n.dev API key to store. Get yours at https://l10n.dev/ws/keys

No output schema declared.

No examples provided.

l10n_translate_file ~1,287

Translate an i18n source file to one or more target languages using l10n.dev AI. Supports JSON, JSONC, Flutter ARB, YAML, PO (gettext), XLIFF, MD, and all other text-based localization formats. Format is auto-detected from the file extension. If sourceFile is omitted, scan the project for i18n source files. Common patterns to look for: - `locales/en.json`, `locales/en-US.json` (flat file-based) - `locales/en/common.json`, `locales/en/messages.json` (folder-based) - `app_en.arb` (Flutter ARB) - `*.po`, `*.xliff`, `*.yaml` files with language-code naming - `ai-l10n.config.json` if it already exists (read it to find the declared source files) For each candidate source file found, call `l10n_detect_project_structure` and collect: - Structure type, source language code, and detected target languages - Which target files already exist on disk If no source files can be found, ask me which file to use before continuing. If targetLanguages is omitted, and if target languages are not detected, ask me for them. Show a brief summary of what was found before continuing. PRE-TRANSLATION CHECKS — perform all of these BEFORE calling translate: 1. LINGUISTIC INSTRUCTIONS: If the user has not mentioned tone, style, or brand voice in this conversation, call l10n_list_instructions first. Check whether a saved instruction exists for each requested target language pair (source → target). If instructions exist for OTHER language pairs but NOT the requested targets, mention this gap explicitly. Ask the user in one sentence: "No instruction found for [language(s)] — would you like to set a tone/style rule before translating? (e.g. formal, casual, keep brand terms untranslated)" If yes, call l10n_create_instruction and pass the instruction text back via the 'instruction' parameter. If no or they want to skip, proceed without it. 2. GLOSSARY: If generateGlossary was not explicitly set by the user, call l10n_list_glossaries and check whether an active glossary…

NameTypeReqDescription
generateGlossarybooleanGenerate and save a glossary from this translation for consistent future translations. Costs extra characters (full source content debited upfront). Default false.
generatePluralFormsbooleanGenerate plural form strings with suffixes (e.g. for i18next). Do not enable for strict source-to-target mapping. Default false.
instructionstringLinguistic instruction for this translation e.g. 'Use formal tone, never translate Dashboard'. Overrides the active saved instruction for this request. Max 1000 characters.
replacebooleanReplace existing target files in-place. When false (default), uniquely-named copies are created.
sourceFilestringyesAbsolute or relative path to the source i18n file (JSON, JSONC, ARB, YAML, PO, XLIFF, MD, etc.)
targetLanguagesarrayBCP-47 language codes e.g. ['es','fr','de']. Auto-detected from project structure if omitted.
translateMetadatabooleanTranslate metadata entries along with UI strings (e.g. Flutter ARB @key descriptions). When false (default), metadata entries are preserved unchanged in target files.
translateOnlyNewStringsbooleanOnly translate new/changed strings, skipping strings that already exist in the target file. Saves character quota. Default false. Note: on first run, only added strings are translated because the has…
useShorteningbooleanAllow shorter translations where appropriate. Default false.
verbosebooleanEnable verbose SDK logging in the output. Default false.

No output schema declared.

No examples provided.

l10n_update_glossary ~95

Update the name or active status of an existing glossary. Setting isActive to true deactivates all other glossaries for the same language pair.

NameTypeReqDescription
glossaryIdintegeryesNumeric ID of the glossary to update
isActivebooleanEnable or disable this glossary. Setting true deactivates all other glossaries for the same language pair.
namestringNew display name

No output schema declared.

No examples provided.

l10n_update_instruction ~125

Update the text, name, or active status of an existing linguistic instruction. Use to edit a previously saved instruction without deleting and recreating it. Setting isActive to true deactivates all other instructions for the same language pair.

NameTypeReqDescription
instructionIdintegeryesNumeric ID of the instruction to update
isActivebooleanEnable or disable this instruction. Setting true deactivates all other instructions for the same language pair.
namestringNew display name
textstringNew instruction text. Max 1000 characters.

No output schema declared.

No examples provided.