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
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
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
claude mcp add l10n-dev-ai-l10n-mcp -- npx -y ai-l10n-mcp
codex mcp add l10n-dev-ai-l10n-mcp -- npx -y ai-l10n-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"l10n-dev-ai-l10n-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"ai-l10n-mcp"
],
"enabled": true
}
}
} openclaw mcp add l10n-dev-ai-l10n-mcp --command npx --arg -y --arg ai-l10n-mcp
mcp_servers:
l10n-dev-ai-l10n-mcp:
command: "npx"
args: ["-y", "ai-l10n-mcp"] {
"mcpServers": {
"l10n-dev-ai-l10n-mcp": {
"command": "npx",
"args": [
"-y",
"ai-l10n-mcp"
]
}
}
} 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.
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.
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.
l10n_add_glossary_entry 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).
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | — | Disambiguation note e.g. 'financial institution' to clarify the intended meaning |
| glossaryId | integer | yes | Numeric ID of the glossary to add to |
| sourceTerm | string | yes | Term in the source language |
| targetTerm | string | yes | Preferred translation of the term |
No output schema declared.
No examples provided.
l10n_create_glossary 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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Display name for this glossary e.g. 'My App German Glossary' |
| sourceLanguageCode | string | yes | Source language BCP-47 code e.g. 'en' |
| targetLanguageCode | string | yes | Target language BCP-47 code e.g. 'de' |
No output schema declared.
No examples provided.
l10n_create_instruction Create Linguistic 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"
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | — | Optional display name for this instruction |
| sourceLanguageCode | string | yes | Source language BCP-47 code e.g. 'en' |
| targetLanguageCode | string | yes | Target language BCP-47 code e.g. 'de' |
| text | string | yes | The 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 Delete Glossary ~44
Permanently delete a glossary and all its term entries. This cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| glossaryId | integer | yes | Numeric ID of the glossary to delete |
No output schema declared.
No examples provided.
l10n_delete_glossary_entry Delete Glossary Entry ~51
Remove a single term mapping from a glossary.
| Name | Type | Req | Description |
|---|---|---|---|
| entryId | integer | yes | Numeric ID of the entry to remove |
| glossaryId | integer | yes | Numeric ID of the glossary |
No output schema declared.
No examples provided.
l10n_delete_instruction Delete Linguistic Instruction ~52
Permanently delete a linguistic instruction. This cannot be undone. If the deleted instruction was active, no other instruction is automatically activated.
| Name | Type | Req | Description |
|---|---|---|---|
| instructionId | integer | yes | Numeric ID of the instruction to delete |
No output schema declared.
No examples provided.
l10n_detect_project_structure Detect i18n 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).
| Name | Type | Req | Description |
|---|---|---|---|
| sourceFile | string | yes | Absolute 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 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 Get Account 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| glossaryId | integer | yes | Numeric ID of the glossary to retrieve |
No output schema declared.
No examples provided.
l10n_list_glossaries 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 List Linguistic 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| apiKey | string | yes | The l10n.dev API key to store. Get yours at https://l10n.dev/ws/keys |
No output schema declared.
No examples provided.
l10n_translate_file Translate i18n File, configs, md documents, and other text-based formats ~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…
| Name | Type | Req | Description |
|---|---|---|---|
| generateGlossary | boolean | — | Generate and save a glossary from this translation for consistent future translations. Costs extra characters (full source content debited upfront). Default false. |
| generatePluralForms | boolean | — | Generate plural form strings with suffixes (e.g. for i18next). Do not enable for strict source-to-target mapping. Default false. |
| instruction | string | — | Linguistic instruction for this translation e.g. 'Use formal tone, never translate Dashboard'. Overrides the active saved instruction for this request. Max 1000 characters. |
| replace | boolean | — | Replace existing target files in-place. When false (default), uniquely-named copies are created. |
| sourceFile | string | yes | Absolute or relative path to the source i18n file (JSON, JSONC, ARB, YAML, PO, XLIFF, MD, etc.) |
| targetLanguages | array | — | BCP-47 language codes e.g. ['es','fr','de']. Auto-detected from project structure if omitted. |
| translateMetadata | boolean | — | Translate metadata entries along with UI strings (e.g. Flutter ARB @key descriptions). When false (default), metadata entries are preserved unchanged in target files. |
| translateOnlyNewStrings | boolean | — | Only 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… |
| useShortening | boolean | — | Allow shorter translations where appropriate. Default false. |
| verbose | boolean | — | Enable verbose SDK logging in the output. Default false. |
No output schema declared.
No examples provided.
l10n_update_glossary 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.
| Name | Type | Req | Description |
|---|---|---|---|
| glossaryId | integer | yes | Numeric ID of the glossary to update |
| isActive | boolean | — | Enable or disable this glossary. Setting true deactivates all other glossaries for the same language pair. |
| name | string | — | New display name |
No output schema declared.
No examples provided.
l10n_update_instruction Update Linguistic 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.
| Name | Type | Req | Description |
|---|---|---|---|
| instructionId | integer | yes | Numeric ID of the instruction to update |
| isActive | boolean | — | Enable or disable this instruction. Setting true deactivates all other instructions for the same language pair. |
| name | string | — | New display name |
| text | string | — | New instruction text. Max 1000 characters. |
No output schema declared.
No examples provided.