Skip to main content
Glama
translated

Lara Translate MCP Server

by translated

Servidor MCP de Lara Translate

Un servidor del Protocolo de Contexto de Modelos (MCP) para Lara Translate, que permite capacidades de traducción profesional con soporte para detección de idiomas, traducciones contextuales, memorias de traducción y glosarios.

Lara aprovecha los Modelos de Lenguaje de Traducción (T-LM) entrenados con miles de millones de segmentos traducidos profesionalmente, ofreciendo traducciones específicas de dominio que capturan matices culturales y terminología industrial que los LLM de propósito general a menudo pasan por alto.

Licencia Descargas de Docker Descargas de npm

Inicio rápido

Elige tu cliente a continuación: no necesitas claves API, solo inicia sesión a través de tu navegador.

Claude Desktop

  1. Ve a Settings > Connectors

  2. Haz clic en Add Custom Connector

  3. Introduce el nombre: Lara

  4. Introduce la URL: https://mcp-v2.laratranslate.com/v1

  5. Haz clic en Add, luego haz clic en Connect

  6. Inicia sesión con tus credenciales de Lara Translate en el navegador

Listo: Lara Translate ya está disponible en tus conversaciones.

Cursor

Una vez que Lara Translate aparezca en el mercado oficial de plugins de Cursor, instálalo desde dentro de Cursor:

  1. Abre el navegador de plugins y busca Lara Translate.

  2. Haz clic en Install.

  3. La primera vez que utilices una herramienta de Lara, se abrirá tu navegador para autenticarte.

Mientras tanto, o para una instalación manual, consulta la Guía de configuración del cliente.

Claude Code

Una vez que Lara Translate aparezca en el mercado oficial de plugins de Claude Code, instálalo desde dentro de Claude Code:

/plugin

Busca Lara Translate e instálalo. La primera vez que utilices una herramienta de Lara, se abrirá tu navegador para autenticarte.

Mientras tanto, o para una instalación manual, consulta la Guía de configuración del cliente.

Otros clientes

Para obtener instrucciones paso a paso sobre la configuración de OAuth en VS Code (GitHub Copilot), Windsurf, Cline, Continue y más, consulta la Guía de configuración del cliente.

Si tu cliente no aparece en la lista, el enfoque general es añadir la URL del servidor (https://mcp-v2.laratranslate.com/v1) a tu configuración de MCP; el cliente gestionará la autenticación OAuth automáticamente.

Para obtener una lista completa de clientes compatibles con MCP, visita la página oficial de clientes MCP.

Verifica que funciona

Después de la configuración, prueba con un prompt sencillo:

Translate with Lara "Hello world" to Spanish

Tu cliente debería invocar a Lara Translate y devolver la traducción.


Related MCP server: Polyglot

Herramientas disponibles

Traducción

Herramienta

Descripción

translate

Traduce texto entre idiomas con soporte para contexto, instrucciones, memorias de traducción, glosarios y múltiples estilos (fiel/fluido/creativo)

Detección de idiomas

Herramienta

Descripción

detect_language

Detecta el idioma de un texto dado o de una matriz de textos

list_languages

Lista todos los códigos de idioma admitidos

Memorias de traducción

Herramienta

Descripción

list_memories

Lista todas las memorias de traducción en tu cuenta

create_memory

Crea una nueva memoria de traducción

update_memory

Actualiza el nombre de una memoria de traducción

delete_memory

Elimina una memoria de traducción

add_translation

Añade una unidad de traducción (par fuente + destino) a una memoria

delete_translation

Elimina una unidad de traducción de una memoria

import_tmx

Importa un archivo TMX a una memoria

check_import_status

Comprueba el estado de un trabajo de importación TMX

Glosarios

Herramienta

Descripción

list_glossaries

Lista todos los glosarios en tu cuenta

get_glossary

Obtiene los detalles de un glosario específico

create_glossary

Crea un nuevo glosario

update_glossary

Actualiza el nombre de un glosario

delete_glossary

Elimina un glosario

add_glossary_entry

Añade o reemplaza una entrada de término en un glosario

delete_glossary_entry

Elimina una entrada de término de un glosario

import_glossary_csv

Importa entradas desde un archivo CSV a un glosario

check_glossary_import_status

Comprueba el estado de un trabajo de importación de CSV de glosario

export_glossary

Exporta un glosario como CSV

get_glossary_counts

Obtiene el número de entradas en un glosario


Autenticación

OAuth 2.0 (predeterminado)

Este es el método utilizado en el Inicio rápido anterior. Solo proporcionas la URL del servidor en la configuración de tu cliente; no se necesitan claves API. Tu cliente gestiona el flujo de OAuth automáticamente: abre tu navegador, inicias sesión con tus credenciales de Lara Translate y ya estás conectado.

Para obtener instrucciones de configuración de OAuth por cliente, consulta la Guía de configuración del cliente.

Clave de acceso (alternativa)

Si prefieres autenticarte con claves API en lugar de iniciar sesión en el navegador, puedes pasar tus credenciales directamente en la configuración del cliente. Obtén tu ID de clave de acceso y Secreto en Lara Translate.

Consulta la sección de Clave de acceso en la Guía de configuración del cliente para ver ejemplos de configuración.


Autoalojamiento

La mayoría de los usuarios pueden conectarse al endpoint alojado (https://mcp-v2.laratranslate.com/v1) utilizando las instrucciones de Inicio rápido anteriores. Las opciones a continuación son para ejecutar el servidor por tu cuenta.

STDIO mediante NPX

Requiere Node.js.

{
  "mcpServers": {
    "lara-translate": {
      "command": "npx",
      "args": ["-y", "@translated/lara-mcp@latest"],
      "env": {
        "LARA_ACCESS_KEY_ID": "<YOUR_ACCESS_KEY_ID>",
        "LARA_ACCESS_KEY_SECRET": "<YOUR_ACCESS_KEY_SECRET>"
      }
    }
  }
}

STDIO mediante Docker

Requiere Docker.

{
  "mcpServers": {
    "lara-translate": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "LARA_ACCESS_KEY_ID",
        "-e", "LARA_ACCESS_KEY_SECRET",
        "translatednet/lara-mcp:latest"
      ],
      "env": {
        "LARA_ACCESS_KEY_ID": "<YOUR_ACCESS_KEY_ID>",
        "LARA_ACCESS_KEY_SECRET": "<YOUR_ACCESS_KEY_SECRET>"
      }
    }
  }
}

Compilación desde el código fuente

Node.js

git clone https://github.com/translated/lara-mcp.git
cd lara-mcp
pnpm install
pnpm run build

Luego añade a tu configuración de MCP:

{
  "mcpServers": {
    "lara-translate": {
      "command": "node",
      "args": ["<FULL_PATH_TO_PROJECT>/dist/index.js"],
      "env": {
        "LARA_ACCESS_KEY_ID": "<YOUR_ACCESS_KEY_ID>",
        "LARA_ACCESS_KEY_SECRET": "<YOUR_ACCESS_KEY_SECRET>"
      }
    }
  }
}

Docker

git clone https://github.com/translated/lara-mcp.git
cd lara-mcp
docker build -t lara-mcp .

Luego añade a tu configuración de MCP:

{
  "mcpServers": {
    "lara-translate": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "LARA_ACCESS_KEY_ID",
        "-e", "LARA_ACCESS_KEY_SECRET",
        "lara-mcp"
      ],
      "env": {
        "LARA_ACCESS_KEY_ID": "<YOUR_ACCESS_KEY_ID>",
        "LARA_ACCESS_KEY_SECRET": "<YOUR_ACCESS_KEY_SECRET>"
      }
    }
  }
}

Soporte

Available Tools

22 tools
add_glossary_entryA
DestructiveIdempotent

Adds or replaces an entry in a glossary in your Lara Translate account. Supports both monodirectional and multidirectional glossaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe glossary ID (format: gls_*, e.g., 'gls_xyz123')
guidNoOptional entry identifier. Use this for multidirectional glossaries or to update a specific entry.
termsYesArray of terms with language and value. For monodirectional glossaries, the first term is the source and the rest are targets. For multidirectional glossaries, all terms are treated equally. Use the list_languages tool to get supported language codes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesImport job identifier
endNoEnd offset of the import
sizeNoTotal number of entries in the import
beginNoBegin offset of the import
channelNoChannel identifier used by the import
progressNoImport progress between 0 and 1 (1 means complete)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered; the description's 'adds or replaces' is consistent with the idempotent/replace semantics. It adds the monodirectional vs multidirectional capability, which annotations do not convey, but does not explain what a replace destroys or any auth/rate-limit constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core action front-loaded and the glossary-type nuance second; every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the input schema is rich, so return values and parameter details need not be repeated. For a destructive, idempotent mutation the description is adequate, though it could have noted that the target glossary must exist and that replacement overwrites existing term data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents id format, guid usage, and the terms array structure including the source/target ordering for monodirectional glossaries. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (adds or replaces) and a specific resource (an entry in a glossary in your Lara Translate account). The 'adds or replaces' framing implicitly separates it from the sibling delete_glossary_entry, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'adds or replaces' phrasing and the mention of monodirectional vs multidirectional glossaries imply when the tool applies, but there is no explicit when-to-use guidance, no statement of prerequisites (e.g. glossary must exist), and no routing to alternatives such as update_glossary or delete_glossary_entry.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_translationC
Destructive

Adds a translation to a translation memory in your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID or list of IDs where to save the translation unit. Format: mem_xyz123
tuidNoTranslation Unit unique identifier
sourceYesThe source language code of the sentence, it MUST be a language supported by the system, use the list_languages tool to get a list of all the supported languages
targetYesThe target language code of the translation, it MUST be a language supported by the system, use the list_languages tool to get a list of all the supported languages
sentenceYesThe source sentence
translationYesThe translated sentence
sentence_afterNoThe sentence after the source sentence to specify the context of the translation unit
sentence_beforeNoThe sentence before the source sentence to specify the context of the translation unit

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesImport job identifier
endNoEnd offset of the import
sizeNoTotal number of units in the import
beginNoBegin offset of the import
channelNoChannel identifier used by the import
progressNoImport progress between 0 and 1 (1 means complete)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the behavioral profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=false), and the description adds nothing on top: no note about duplicates, reversibility, auth/permission requirements, or what destruction means. With annotations present the bar is lower, but the description still contributes no extra behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. It is appropriately sized, though its brevity is partly under-specification rather than disciplined conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the input schema is fully documented with no gaps. However, for a destructive, non-idempotent write tool, the description does not state preconditions (memory must exist, duplicate handling) that the structured fields leave open.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself is rich (field semantics, the mem_xyz123 format, and the list_languages cross-reference for language codes). The description adds no parameter-level meaning, so the baseline 3 for full schema coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: adding a translation to a translation memory in the Lara Translate account. It clearly identifies the object of the operation, but it does not differentiate from related siblings such as import_tmx (bulk add) or delete_translation, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of alternatives. The sibling set includes import_tmx and delete_translation, which are natural companions/alternatives, but the description gives no routing signal for choosing between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_glossary_import_statusA
Read-onlyIdempotent

Checks the status of a glossary CSV import job started by import_glossary_csv. Poll this tool with the import_id returned from import_glossary_csv until the import is complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the glossary import job

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesImport job identifier
endNoEnd offset of the import
sizeNoTotal number of entries in the import
beginNoBegin offset of the import
channelNoChannel identifier used by the import
progressNoImport progress between 0 and 1 (1 means complete)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds the non-obvious operational trait that this is a polling endpoint to be called repeatedly until completion, which is genuine context beyond the annotations, though it says nothing about rate limits or what a terminal state looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the purpose and followed immediately by the actionable polling instruction. Nothing wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter polling tool with an output schema and full annotation coverage, everything an agent needs is present: what it does, when to call it, and how to drive the poll loop. Return-value details are appropriately left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds provenance the schema lacks — the id comes from import_glossary_csv — which helps the agent source the value, though it calls it 'import_id' while the schema names it 'id', a minor mismatch.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('checks the status') plus resource ('glossary CSV import job'), and it names the originating sibling tool import_glossary_csv, which distinguishes it from the TMX-oriented check_import_status sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call it (after import_glossary_csv) and how (poll with the returned import_id until complete). It does not, however, explicitly rule out or contrast with the sibling check_import_status, leaving that routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_import_statusA
Read-onlyIdempotent

Checks the status of a TMX import job started by import_tmx. Poll this tool with the import_id returned from import_tmx until the import is complete. The response includes a progress field to track completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the import job

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesImport job identifier
endNoEnd offset of the import
sizeNoTotal number of units in the import
beginNoBegin offset of the import
channelNoChannel identifier used by the import
progressNoImport progress between 0 and 1 (1 means complete)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: this is a polling endpoint, the ID originates from import_tmx's response, and progress is the field to watch for completion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the purpose and followed by the polling instruction and completion signal. The progress-field sentence is somewhat redundant with the existing output schema, but overall there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations, a fully described single-param schema, and an output schema carrying the return values, the description needs only to explain pairing and polling — which it does. The only missing piece is explicit disambiguation from check_glossary_import_status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter, so the baseline would be 3. The description earns an extra point by disclosing provenance — the id is the value returned by import_tmx — which the schema's generic "The ID of the import job" does not convey; a minor naming drift ("import_id" vs schema's "id") is the only friction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Checks the status of a TMX import job") and names the tool that creates the job (import_tmx), which implicitly separates it from the look-alike sibling check_glossary_import_status. It is clear and scoped, though it never explicitly rules out the glossary-status sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operational guidance: poll this tool with the import_id returned from import_tmx until the import is complete. That is a clear when-to-use trigger and an exit condition. It stops short of naming the alternative (check_glossary_import_status) for non-TMX imports.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_glossaryA

Create a glossary with a custom name in your Lara Translate account. Glossaries enforce specific terminology during translation.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the new glossary, it should be short and descriptive, like 'brand_terms' or 'legal_terminology'

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique glossary identifier (format: gls_*)
nameYesDisplay name of the glossary
ownerIdYesIdentifier of the glossary owner
createdAtYesISO 8601 timestamp
updatedAtYesISO 8601 timestamp
isPersonalYesTrue if the glossary is private to the owner

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-destructive, non-idempotent creation, so the safety profile is covered. The description adds the conceptual role of glossaries but says nothing about required account/permissions, whether duplicate names are allowed, or naming constraints beyond what the schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, action front-loaded in the first clause, and the second sentence earns its place by explaining the resource's purpose. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, for a mutation tool in a 21-sibling family, the description omits any guidance on when this creator is the right choice versus the related create/import tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter and 100% schema description coverage, the schema already carries the naming guidance ('short and descriptive, like brand_terms'). The description's phrase 'with a custom name' adds no semantics beyond that, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Create a glossary') and adds a one-line definition of what a glossary does. It is clearly distinguishable by resource from siblings like create_memory or create_record, though it does not contrast itself with the other glossary-creation paths (import_glossary_csv, add_glossary_entry).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the note that glossaries 'enforce specific terminology during translation' hints at why you would create one, but there is no statement of when to create a new glossary versus importing an existing CSV or adding entries to an existing one. No prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_memoryB

Create a translation memory with a custom name in your Lara Translate account. Translation memories store pairs of source and target text segments (translation units) for reuse in future translations.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the new memory, it should be short and generic, like 'catch_phrases' or 'brand_names'
external_idNoThe ID of the memory to be imported from MyMemory. Use this to initialize the memory with external content. Format: ext_my_[MyMemory ID]

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique memory identifier (format: mem_*)
nameYesDisplay name of the memory
secretNoMemory secret, if any
ownerIdYesIdentifier of the memory owner
sharedAtYesISO 8601 timestamp
createdAtYesISO 8601 timestamp
updatedAtYesISO 8601 timestamp
externalIdNoExternal identifier (e.g. MyMemory ID) when imported
isPersonalYesTrue if the memory is private to the owner
collaboratorsCountYesNumber of collaborators with access to the memory

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the mutating, non-idempotent nature is covered. The description adds that the memory lives in the user's account and stores source/target segment pairs, which is modest extra context but says nothing about duplicate-name handling, limits, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and resource, with no repetition of the title. The second sentence is explanatory rather than operational but is short and does orient an agent unfamiliar with translation memory concepts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full schema coverage, a present output schema, and annotations covering safety, the description only needs to convey purpose and domain, which it does. It stops short of describing what the created memory returns or how external_id import interacts with creation, but nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the name parameter already documents its purpose and gives examples ('catch_phrases', 'brand_names'), and external_id documents the MyMemory import format. The description only echoes the 'custom name' concept, adding nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Create a translation memory') and names the account scope, so it is immediately distinguishable from list_memories, update_memory, and delete_memory in the sibling set. It never explicitly contrasts itself with those siblings, but the verb alone carries the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to invoke this tool versus alternatives (import_tmx, create_glossary, add_translation), nor any prerequisites or exclusions. The second sentence explains what a memory is for, which only weakly implies a use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_glossaryC
DestructiveIdempotent

Deletes a glossary from your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe glossary ID to delete (format: gls_*, e.g., 'gls_xyz123')

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique glossary identifier (format: gls_*)
nameYesDisplay name of the glossary
ownerIdYesIdentifier of the glossary owner
createdAtYesISO 8601 timestamp
updatedAtYesISO 8601 timestamp
isPersonalYesTrue if the glossary is private to the owner

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond them — it does not say the deletion is irreversible, whether glossary entries are cascaded away, or whether the caller needs elevated permissions, which is what a destructive tool's prose should supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with the verb first and no wasted clauses. The trailing 'from your Lara Translate account' is mild filler rather than useful information, but nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but for a destructive, irreversible operation the definition is thin: no cascade behavior, no confirmation or precondition notes, and no routing to the entry-level deletion sibling. An agent can call it, but not safely or confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'id' parameter is fully documented with its gls_* pattern and example, so the baseline of 3 applies. The description contributes no additional meaning about the identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Deletes a glossary'), so the action is unambiguous. It does not, however, differentiate itself from the sibling delete_glossary_entry, nor state whether the whole glossary and its entries go away together — the agent must infer that from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisite (e.g., glossary must exist, required permissions), and no pointer to alternatives such as delete_glossary_entry for removing single terms. The agent gets only the bare statement of the operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_glossary_entryA
DestructiveIdempotent

Deletes an entry from a glossary in your Lara Translate account. Use term for monodirectional glossaries or guid for multidirectional glossaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe glossary ID (format: gls_*, e.g., 'gls_xyz123')
guidNoThe entry GUID to delete. Use this for multidirectional glossaries.
termNoThe term to delete. Use this for monodirectional glossaries.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesImport job identifier
endNoEnd offset of the import
sizeNoTotal number of entries in the import
beginNoBegin offset of the import
channelNoChannel identifier used by the import
progressNoImport progress between 0 and 1 (1 means complete)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that — it never states the deletion is permanent, whether the entry can be recovered, or what happens on a missing id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, purpose front-loaded and the parameter routing second. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering destructiveness/idempotency, an output schema covering returns, and a fully documented schema, the definition is nearly self-sufficient. It only omits any note on irreversibility or error behavior for the destructive path.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself already labels guid for multidirectional and term for monodirectional glossaries, so the description largely restates structured data. It adds no format, validation, or mutual-exclusivity detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Deletes an entry from a glossary.' The noun 'entry' distinguishes it from the sibling delete_glossary, but no sibling is named explicitly and the account scope is the only additional qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit conditional routing: use term for monodirectional glossaries, guid for multidirectional glossaries. That is clear when-to-use-which guidance, but it does not address when to prefer this tool over alternatives or any preconditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_memoryC
DestructiveIdempotent

Deletes a translation memory from your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique identifier of the memory to update. Format: mem_xyz123

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique memory identifier (format: mem_*)
nameYesDisplay name of the memory
secretNoMemory secret, if any
ownerIdYesIdentifier of the memory owner
sharedAtYesISO 8601 timestamp
createdAtYesISO 8601 timestamp
updatedAtYesISO 8601 timestamp
externalIdNoExternal identifier (e.g. MyMemory ID) when imported
isPersonalYesTrue if the memory is private to the owner
collaboratorsCountYesNumber of collaborators with access to the memory

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the agent knows this is a permanent, idempotent write. The description adds nothing beyond that — no note that deletion is irreversible or what happens to translations referencing the memory, which is the kind of context a destructive tool should supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the verb and resource front-loaded; nothing is wasted, though it is minimal rather than information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations cover the safety profile, so the core is covered. Still, for a destructive operation the description should at minimum signal irreversibility or required permissions, which it omits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter at 100% schema description coverage, the schema already documents the id format (mem_xyz123). The description adds no parameter meaning of its own, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (deletes) and resource (translation memory) scoped to the Lara Translate account, which cleanly separates it from siblings like delete_translation and delete_glossary. It does not, however, explicitly contrast itself with those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus update_memory, list_memories, or other deletion tools, and gives no prerequisites or confirmation requirements. Usage is only implied by the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_translationB
DestructiveIdempotent

Deletes a translation from a translation memory in your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID or list of IDs where to delete the translation unit from. Format: mem_xyz123
tuidNoTranslation Unit unique identifier
sourceYesThe source language code of the sentence
targetYesThe target language code of the translation
sentenceYesThe source sentence
translationYesThe translated sentence
sentence_afterNoThe sentence after the source sentence to specify the context of the translation unit
sentence_beforeNoThe sentence before the source sentence to specify the context of the translation unit

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesImport job identifier
endNoEnd offset of the import
sizeNoTotal number of units in the import
beginNoBegin offset of the import
channelNoChannel identifier used by the import
progressNoImport progress between 0 and 1 (1 means complete)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=false, so the safety profile is covered elsewhere. The description adds nothing beyond confirming the resource: it does not say the deletion is permanent, what happens when the id array holds several memories, or whether the unit can be restored. Also, it describes deleting 'a translation' singular while the schema's id parameter is an array.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the verb and resource, with no filler or repetition of the name. Nothing could be trimmed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return values need not be explained, and annotations cover the destructive/idempotent profile. However, for a destructive delete requiring 5 of 8 parameters and supporting optional context fields (sentence_before/sentence_after), the description supplies no matching or scoping guidance, leaving it barely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 8 parameters, so the schema carries the full burden of parameter meaning (id format mem_xyz123, tuid, language codes, sentence context fields). The description contributes no additional param semantics, which is the baseline-3 case when the schema is this rich.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (deletes) plus resource (a translation from a translation memory in the Lara Translate account), which is enough to separate it from delete_memory, delete_glossary and delete_glossary_entry. It is slightly ambiguous whether the unit being removed is the 'translation' field or the whole translation unit, a distinction the annotation title supplies but the description does not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as update_memory or delete_memory. The agent gets no signal about when this destructive call is appropriate versus other memory-mutating siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_languageA
Read-onlyIdempotent

Detects the language of the provided text. Returns the detected language, content type, and a list of predictions with confidence scores. Accepts a single string or an array of strings (up to 128 elements). Use this tool explicitly whenever the user asks to know or confirm what language a text is written in — including when that request is combined with a translation request (e.g., 'detect the language of this text and translate it into English'). In that case, call this tool first, tell the user which language was detected, and only then call the translate tool (you do not need to pass the detected language as 'source' to translate — translate can auto-detect on its own — but the user still expects to be told the result of detection).

ParametersJSON Schema
NameRequiredDescriptionDefault
hintNoOptional language code hint to guide detection (e.g., 'en-EN').
textYesThe text to detect the language of. Can be a single string or an array of strings (up to 128 elements).
passlistNoOptional list of language codes to restrict detection results to.

Output Schema

ParametersJSON Schema
NameRequiredDescription
languageYesDetected language code (e.g., 'en-US')
contentTypeYesContent type of the analysed text
predictionsYesRanked list of candidate languages with confidence scores

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered structurally. The description adds the input-size ceiling (128 elements) and the multi-step orchestration behavior with translate, which the annotations do not convey. It does not disclose anything about latency or cost for large batches, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and output shape are front-loaded in the first two sentences, and the usage rule follows. The final sentence is dense with nested parentheticals, and part of the translate guidance is arguably over-explained for a detection tool, but nothing is wasted enough to obscure the core instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not detail return values, and it covers input shape, limits, and workflow positioning. It leaves the optional 'hint'/'passlist' controls unexplained, which is the main remaining gap for a 3-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description restates the string-or-array shape and 128-element limit already documented in the schema, and says nothing about the 'hint' or 'passlist' parameters, which are the ones most likely to be misused.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb+resource ('Detects the language of the provided text'), and the second sentence names the outputs. It is trivially distinguishable from siblings like translate and list_languages, which do different jobs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use rule ('whenever the user asks to know or confirm what language a text is written in'), covers the compound case with translation, and specifies call ordering plus what to report back. No inference is required about when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_glossaryB
Read-onlyIdempotent

Exports a glossary as CSV from your Lara Translate account. Supports unidirectional and multidirectional formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe glossary ID (format: gls_*, e.g., 'gls_xyz123')
sourceNoThe source language code. Required when content_type is 'csv/table-uni'
content_typeYesThe export format. 'csv/table-uni' for unidirectional (requires source parameter), 'csv/table-multi' for multidirectional

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYesThe exported glossary content serialised as CSV

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description's burden is lighter. It adds the unidirectional/multidirectional format dimension but does not state whether export triggers file generation, where output goes, or any size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, purpose front-loaded before the format detail, with no filler. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, an output schema exists so return values need no explanation, and annotations carry the safety semantics. The one minor gap is that the conditional 'source required for csv/table-uni' rule is only in the schema, not the description, but that is adequately covered elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents id, source, and the content_type enum plus the conditional source requirement. The description's mention of uni/multidirectional formats merely restates the enum, adding no syntax or behavioral detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('exports a glossary') plus the output format ('as CSV') and account scope, which distinguishes it from get_glossary/list_glossaries. It does not name or contrast with those siblings explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no alternatives such as get_glossary or list_glossaries. The only hint is that two export formats exist, which is format information rather than usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_glossaryA
Read-onlyIdempotent

Retrieves a specific glossary by ID from your Lara Translate account. Returns null if the glossary is not found.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe glossary ID (format: gls_*, e.g., 'gls_xyz123')

Output Schema

ParametersJSON Schema
NameRequiredDescription
glossaryYesThe requested glossary, or null when no glossary has that id

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds a genuinely useful behavior not in the annotations: it returns null when the glossary is not found, telling the agent how to detect a miss rather than assuming an error.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the core action front-loaded and the not-found behavior appended. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 100%-documented single parameter, rich annotations, and an output schema covering return values, the description only needs to convey purpose and the not-found edge case, which it does. It stops just short of routing the agent among the many glossary siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single id parameter's format (gls_* pattern, example) is fully documented in the schema. The description adds no parameter detail beyond referencing "by ID", so the schema baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Retrieves) and resource (a specific glossary by ID) plus the account scope. It clearly distinguishes a single-item fetch from a collection listing, though it does not name sibling tools like list_glossaries or get_glossary_counts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "by ID" phrasing implies usage when the caller already has an identifier, but no explicit when-to-use/when-not or alternative routing is given (e.g., use list_glossaries to discover IDs first). Guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_glossary_countsA
Read-onlyIdempotent

Retrieves the term and language counts for a glossary in your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe glossary ID (format: gls_*, e.g., 'gls_xyz123')

Output Schema

ParametersJSON Schema
NameRequiredDescription
unidirectionalNoEntry counts keyed by language code for unidirectional glossaries
multidirectionalNoTotal entry count for multidirectional glossaries

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered by structured data. The description adds no behavioral context beyond the annotations — no error handling for an unknown/invalid glossary ID, no note on auth requirements, and no indication of what units the counts use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, no filler, and the resource scope is front-loaded. It is appropriately sized for a simple single-parameter read tool, though it is too terse to convey any usage or behavioral nuance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the annotations plus the fully documented single parameter cover the rest. For a one-parameter read-only tool this is nearly complete; only error behavior for an invalid ID is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the single id parameter is documented with its gls_* pattern and example, and the description adds no format, constraint, or semantics beyond that. Baseline 3 applies when the schema already does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ("Retrieves") and a precise resource ("term and language counts for a glossary"), which clearly separates it from the broader get_glossary sibling that returns glossary details. It does not name a sibling explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer you call this when you need counts rather than full glossary data, but the description never states when to prefer it over get_glossary (which may already surface counts) or after operations like add_glossary_entry. No prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_glossary_csvA
DestructiveIdempotent

Imports a CSV file into a glossary. Supports unidirectional and multidirectional formats. This is an async operation that returns an import job object containing an import_id. Poll with check_glossary_import_status using the returned import_id until the import is complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe glossary ID (format: gls_*, e.g., 'gls_xyz123')
gzipNoWhether the CSV content is gzip compressed
csv_contentYesThe content of the CSV file to upload
content_typeYesThe format of the CSV file. 'csv/table-uni' for unidirectional, 'csv/table-multi' for multidirectionalcsv/table-uni

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesImport job identifier
endNoEnd offset of the import
sizeNoTotal number of entries in the import
beginNoBegin offset of the import
channelNoChannel identifier used by the import
progressNoImport progress between 0 and 1 (1 means complete)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and idempotentHint=true, yet the description adds genuinely non-derivable workflow context: the operation is asynchronous, returns a job object with an import_id, and must be polled to completion. It omits any warning about what the destructive import overwrites in the target glossary, which is the one notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose, format scope, then the async/polling contract, each front-loaded with no filler. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description still covers the async lifecycle end-to-end including the sibling tool to poll with. For a destructive, annotated import tool, nothing needed to invoke and complete the workflow is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so id/content_type/csv_content/gzip are already fully documented in the schema. The description restates the unidirectional vs multidirectional distinction that the content_type enum already encodes, adding no new syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Imports a CSV file into a glossary') and names the supported formats, which distinguishes it from the sibling import_tmx (TMX vs CSV). An agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent the call is async and routes the follow-up to check_glossary_import_status with the returned import_id — a clear when/how-to-continue instruction. It does not, however, compare against import_tmx or state when CSV import is preferred over other ingestion paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_tmxA
Destructive

Imports a TMX file into a translation memory. This is an async operation that returns an import job object containing an import_id. Poll with check_import_status using the returned import_id until the import is complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the memory to update. Format: mem_xyz123.
tmx_contentYesThe content of the tmx file to upload.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesImport job identifier
endNoEnd offset of the import
sizeNoTotal number of units in the import
beginNoBegin offset of the import
channelNoChannel identifier used by the import
progressNoImport progress between 0 and 1 (1 means complete)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and non-idempotent, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the operation is asynchronous and returns an import job with an import_id that must be polled. It does not explain what 'destructive' means here (e.g., whether existing translation units are merged or overwritten), leaving a small gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool does, then the async contract, then the follow-up action. Every sentence carries information the agent needs; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return shape needn't be explained, yet the description still highlights the import_id field that drives the polling loop. For a 2-param destructive async tool, the description covers the operation, its async nature, and the required next step — nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both 'id' (with mem_xyz123 format) and 'tmx_content' are documented in the schema itself. The description adds no parameter-level detail beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Imports a TMX file into a translation memory') and names the exact file format, which cleanly separates it from the sibling import_glossary_csv. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent this is async and to poll with check_import_status using the returned import_id, which is the key usage context for a sibling that exists in the tool list. It does not state when-not to use it or how it differs from other memory-writing tools like add_translation, so it stops short of full when/alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_glossariesA
Read-onlyIdempotent

Lists all glossaries in your Lara Translate account. Glossaries are collections of terms with their translations that enforce specific terminology during translation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesGlossaries accessible to the authenticated account

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds domain context (what a glossary is) but says nothing about pagination, result size, or ordering behavior an agent might need for a full listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no filler; the purpose leads. The second sentence is definitional background rather than invocation guidance, but it is short and plausibly useful to an agent unfamiliar with the terminology domain.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters, a full output schema, and annotations covering the safety profile, almost nothing is left for the description to carry. It is appropriately complete, with only return-shape/pagination behavior unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the schema already states. Baseline for 0 params applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists all glossaries') and scopes it to the account. The plural/'all' framing implicitly contrasts with the singular get_glossary sibling, but the description never names a sibling to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers this is the discovery tool to call before get_glossary/update_glossary/delete_glossary, but no when-to-use or when-not-to-use guidance is given, and alternatives are not named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_languagesA
Read-onlyIdempotent

Lists all supported languages in your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesSupported language codes (e.g., 'en-US', 'it-IT')

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only the account-scoping detail and nothing about result size or ordering; for a parameterless read this is adequate but not enriching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. The verb and scope lead, and no filler or redundant restatement of the title is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and there are no parameters or complex behaviors to document. The description is sufficient for this simple enumeration tool, though it omits whether the list is paginated or sorted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies since no parameter semantics are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lists) and resource (all supported languages), plus the scoping context 'in your Lara Translate account'. It is clear enough on its own, though it does not explicitly differentiate itself from the nearby detect_language or translate siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives, and no conditions or prerequisites stated. An agent must infer that this is a lookup helper to call before translate or detect_language.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_memoriesB
Read-onlyIdempotent

Lists all translation memories in your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesTranslation memories accessible to the authenticated account

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered structurally. The description adds only the account-scope detail ('in your Lara Translate account'), which is mildly useful but not rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler or repetition. It is efficient, though it carries no extra information beyond the name and title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters, a full output schema for return values, and annotations covering the safety profile, little more is required. The remaining gap is usage context relative to sibling list tools, which does not affect correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description correctly implies a no-argument, unfiltered listing, consistent with the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Lists) and resource (translation memories) scoped to 'your Lara Translate account'. However, it offers no differentiation from sibling list tools such as list_glossaries or list_languages, which an agent must disambiguate by name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus other listing tools, nor any prerequisites or follow-up actions. The agent must infer usage purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

translateA

Translate text between languages using Lara Translate. Supports language detection, context-aware translations, translation memories, and glossaries. The optional 'instructions' parameter accepts short localization directives (e.g., 'Translate formally') — only provide them when the content specifically requires tone, formality, or terminology adjustments. IMPORTANT: 'target' accepts exactly one language code per call. If the user asks to translate into multiple languages (e.g., 'into Italian and German'), call this tool once per target language and present all resulting translations together. IMPORTANT: 'glossaries' requires glossary IDs in the 'gls_*' format, not glossary names. If the user refers to a glossary by name (e.g., 'our company glossary', 'the marketing glossary'), call list_glossaries first, match the name, and use the returned ID here. If no matching glossary is found, tell the user instead of guessing an ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesAn array of text blocks to translate. Each block contains a text string and a boolean indicating whether it should be translated. This allows for selective translation where some text blocks can be preserved in their original form while others are translated.
styleNoControls how the translation balances accuracy against natural readability. 'faithful' stays close to the source, 'fluid' prioritizes natural readability, 'creative' allows more freedom in the translation.
sourceNoThe source language code (e.g., 'en-EN' for English). If not specified, the system will attempt to detect it automatically. If you have a hint about the source language, you should specify it in the source_hint field.
targetYesThe target language code (e.g., 'it-IT' for Italian). This specifies the single language you want the text translated into. This field accepts ONE language code only. If the user wants the text translated into multiple languages, call this tool once per target language.
contextNoAdditional context string to improve translation quality (e.g., 'This is a legal document' or 'Im talking with a doctor'). This helps the translation system better understand the domain.
adapt_toNoA list of translation memory IDs (format 'mem_*') for adapting the translation. If the user refers to a memory by name rather than by ID, call list_memories first to resolve the name to its ID before calling this tool.
no_traceNoPrivacy flag. If set to true, the request content will not be stored or traced by Lara. Use for sensitive content.
priorityNoTranslation priority. 'normal' for real-time translations, 'background' for batch processing with lower priority.
reasoningNoEnables Lara Think multi-step linguistic analysis. Can increase processing time up to 10x but may improve translation quality for complex texts.
glossariesNoArray of glossary IDs to apply during translation (max 10). IDs must match format: gls_* (e.g., ['gls_xyz123', 'gls_abc456']). Glossaries enforce specific terminology and terms. If the user refers to a glossary by name rather than by ID (e.g., 'my company glossary'), call list_glossaries first to resolve the name to its ID before calling this tool.
source_hintNoUsed to guide language detection. Specify this when the source language is uncertain to improve detection accuracy.
content_typeNoSpecifies the content type of the text. Autodetected if omitted.
instructionsNoOptional list of short localization directives to adjust translation output. Each instruction MUST be no more than 20 words. These are NOT free-form LLM prompts — they are expert localization directives about formality, tone, or domain-specific terminology. Only provide instructions when the content specifically requires them; omitting instructions for general content preserves higher translation quality. Do NOT combine contradictory instructions (e.g., formal and informal tone together). Examples: 'Translate formally', 'Use a creative and concise tone', 'Make translation gender-neutral', 'Mask any price with the [price] placeholder', 'Use quotation marks (« ») for quotations'.
timeout_in_millisNoCustom timeout for the translation request in milliseconds. Max: 300000ms (5 minutes). Useful for very long texts.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesTranslated text blocks, in the same order and structure as the input. Blocks marked translatable: false are preserved verbatim.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description must carry the operational burden. It does disclose non-obvious call-pattern behavior: one language per call requiring repeated invocations, and a mandatory ID-resolution step before glossary use. It does not discuss tracing/storage implications (no_trace lives only in the schema) or that repeated identical calls create new translations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then two clearly flagged IMPORTANT blocks for the highest-risk failure modes. Every sentence carries guidance, though the target-language constraint is duplicated nearly verbatim from the schema description, adding a little length without new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter tool with 100% schema coverage and an output schema, the description only needs to cover routing and workflow pitfalls, which it does (multi-language fan-out, glossary ID resolution, instructions discipline). Remaining parameters (style, priority, reasoning, timeout, no_trace, content_type) are fully documented in the schema and need no repetition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3), and the description adds real meaning on top: it explains when to use 'instructions' and that they must not be contradictory, and it explains the 'gls_*' ID requirement plus the list_glossaries resolution workflow for 'glossaries'. The 'target' single-code rule is restated from the schema, which is mildly redundant but harmless.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Translate text between languages using Lara Translate') and immediately scopes the capabilities (detection, context-aware translation, memories, glossaries). It is unmistakably distinct from siblings like detect_language, list_glossaries, or add_translation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use and when-not-to-use rules: only supply 'instructions' when tone/formality/terminology adjustments are needed, call once per target language for multi-language requests, and call list_glossaries first when the user names a glossary. It even specifies the fallback (tell the user rather than guess an ID).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_glossaryC
DestructiveIdempotent

Updates the name of a glossary in your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe glossary ID (format: gls_*, e.g., 'gls_xyz123')
nameYesThe new name for the glossary

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique glossary identifier (format: gls_*)
nameYesDisplay name of the glossary
ownerIdYesIdentifier of the glossary owner
createdAtYesISO 8601 timestamp
updatedAtYesISO 8601 timestamp
isPersonalYesTrue if the glossary is private to the owner

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is covered elsewhere. The description adds nothing beyond that — it doesn't explain that the existing name is replaced, whether the glossary must pre-exist, or any auth/rate-limit context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-formed sentence with the action and target front-loaded and no filler. It is efficient, though extremely terse for a mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations carry the behavioral profile. For a two-parameter rename tool this is minimally adequate, but it omits any note about preconditions or side effects of replacing the name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both id and name fully documented in the schema, so the baseline is 3. The description reinforces that only the name is the mutated field, but adds no format or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Updates the name of a glossary'), making the narrow scope clear — it renames rather than mutating entries or settings. It does not explicitly distinguish itself from neighboring glossary tools, but the stated scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as create_glossary, delete_glossary, or the entry-level tools. Usage is only inferable from the word 'Updates', with no exclusions, prerequisites, or routing hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_memoryC
DestructiveIdempotent

Updates a translation memory in your Lara Translate account.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique identifier of the memory to update. Format: mem_xyz123
nameYesThe new name for the memory

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique memory identifier (format: mem_*)
nameYesDisplay name of the memory
secretNoMemory secret, if any
ownerIdYesIdentifier of the memory owner
sharedAtYesISO 8601 timestamp
createdAtYesISO 8601 timestamp
updatedAtYesISO 8601 timestamp
externalIdNoExternal identifier (e.g. MyMemory ID) when imported
isPersonalYesTrue if the memory is private to the owner
collaboratorsCountYesNumber of collaborators with access to the memory

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructHint=true, so the safety profile is covered. The description adds nothing beyond that—no mention of what is affected, permission requirements, or reversibility—so it contributes no behavioral context of its own.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no redundancy. It is efficient, though the phrase 'in your Lara Translate account' is mild filler that could be trimmed to make room for actual usage or behavioral detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value explanation is unnecessary, and both parameters are fully covered by the schema. The description is technically sufficient to invoke the tool but omits the rename semantics and any usage framing, leaving a modest gap given the rich structured data available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both id (format mem_xyz123) and name fully documented in the schema. The description adds no meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb ('Updates') and a resource ('a translation memory'), so the operation is identifiable. However, 'updates' is generic and does not convey that this operation specifically renames the memory (which the annotation title and the id+name schema reveal), and it does not distinguish this from siblings like create_memory or delete_memory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use guidance, no prerequisites, and no mention of alternative tools such as create_memory or delete_memory. An agent must infer entirely from the name and schema that this is the correct tool for changing a memory's name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 20 tool updatesv2.0.0
    • Changedadd_glossary_entry1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedadd_translation1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedcheck_glossary_import_status1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedcheck_import_status1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedcreate_glossary3 fields changed
      • addedInput schema / properties / name / description
        Added value: +"The name of the new glossary, it should be short and descriptive, like 'brand_terms' or 'legal_terminology'"
      • addedInput schema / properties / name / maxLength
        Added value: +250
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedcreate_memory2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"The name of the new memory, it should be short and generic, like 'catch_phrases' or 'brand_names'"
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changeddelete_glossary1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changeddelete_glossary_entry1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changeddelete_memory1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changeddelete_translation1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changeddetect_language2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
      • removedOutput schema / properties / predictions / items / additionalProperties
        Removed value: -{}
    • Changedget_glossary1 field changed
      • changedOutput schema / properties / glossary / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "createdAt": {
        -        "description": "ISO 8601 timestamp",
        -        "type": "string"
        -      },
        -      "id": {
        -        "description": "Unique glossary identifier (format: gls_*)",
        -        "type": "string"
        -      },
        -      "isPersonal": {
        -        "description": "True if the glossary is private to the owner",
        -        "type": "boolean"
        -      },
        -      "name": {
        -        "description": "Display name of the glossary",
        -        "type": "string"
        -      },
        -      "ownerId": {
        -        "description": "Identifier of the glossary owner",
        -        "type": "string"
        -      },
        -      "updatedAt": {
        -        "description": "ISO 8601 timestamp",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "name",
        -      "ownerId",
        -      "createdAt",
        -      "updatedAt",
        -      "isPersonal"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "createdAt": {
        +        "description": "ISO 8601 timestamp",
        +        "type": "string"
        +      },
        +      "id": {
        +        "description": "Unique glossary identifier (format: gls_*)",
        +        "type": "string"
        +      },
        +      "isPersonal": {
        +        "description": "True if the glossary is private to the owner",
        +        "type": "boolean"
        +      },
        +      "name": {
        +        "description": "Display name of the glossary",
        +        "type": "string"
        +      },
        +      "ownerId": {
        +        "description": "Identifier of the glossary owner",
        +        "type": "string"
        +      },
        +      "updatedAt": {
        +        "description": "ISO 8601 timestamp",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "ownerId",
        +      "createdAt",
        +      "updatedAt",
        +      "isPersonal"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_glossary_counts1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedimport_glossary_csv1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedimport_tmx1 field changed
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedlist_glossaries1 field changed
      • removedOutput schema / properties / items / items / additionalProperties
        Removed value: -{}
    • Changedlist_memories1 field changed
      • removedOutput schema / properties / items / items / additionalProperties
        Removed value: -{}
    • Changedtranslate5 fields changed
      • changedInput schema / properties / adapt_to / description
        Previous value: -"A list of translation memory IDs for adapting the translation."New value: +"A list of translation memory IDs (format 'mem_*') for adapting the translation. If the user refers to a memory by name rather than by ID, call list_memories first to resolve the name to its ID before calling this tool."
      • changedInput schema / properties / glossaries / description
        Previous value: -"Array of glossary IDs to apply during translation (max 10). IDs must match format: gls_* (e.g., ['gls_xyz123', 'gls_abc456']). Glossaries enforce specific terminology and terms."New value: +"Array of glossary IDs to apply during translation (max 10). IDs must match format: gls_* (e.g., ['gls_xyz123', 'gls_abc456']). Glossaries enforce specific terminology and terms. If the user refers to a glossary by name rather than by ID (e.g., 'my company glossary'), call list_glossaries first to resolve the name to its ID before calling this tool."
      • changedInput schema / properties / target / description
        Previous value: -"The target language code (e.g., 'it-IT' for Italian). This specifies the language you want the text translated into."New value: +"The target language code (e.g., 'it-IT' for Italian). This specifies the single language you want the text translated into. This field accepts ONE language code only. If the user wants the text translated into multiple languages, call this tool once per target language."
      • removedInput schema / properties / text / items / additionalProperties
        Removed value: -{}
      • removedOutput schema / properties / items / items / additionalProperties
        Removed value: -{}
    • Changedupdate_glossary3 fields changed
      • addedInput schema / properties / name / description
        Added value: +"The new name for the glossary"
      • addedInput schema / properties / name / maxLength
        Added value: +250
      • removedOutput schema / additionalProperties
        Removed value: -{}
    • Changedupdate_memory2 fields changed
      • addedInput schema / properties / name / description
        Added value: +"The new name for the memory"
      • removedOutput schema / additionalProperties
        Removed value: -{}
  2. 22 tool updatesv1.0.4
    • Changedadd_glossary_entry1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "begin": {
        +      "description": "Begin offset of the import",
        +      "type": "number"
        +    },
        +    "channel": {
        +      "description": "Channel identifier used by the import",
        +      "type": "number"
        +    },
        +    "end": {
        +      "description": "End offset of the import",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Import job identifier",
        +      "type": "string"
        +    },
        +    "progress": {
        +      "description": "Import progress between 0 and 1 (1 means complete)",
        +      "type": "number"
        +    },
        +    "size": {
        +      "description": "Total number of entries in the import",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedadd_translation1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "begin": {
        +      "description": "Begin offset of the import",
        +      "type": "number"
        +    },
        +    "channel": {
        +      "description": "Channel identifier used by the import",
        +      "type": "number"
        +    },
        +    "end": {
        +      "description": "End offset of the import",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Import job identifier",
        +      "type": "string"
        +    },
        +    "progress": {
        +      "description": "Import progress between 0 and 1 (1 means complete)",
        +      "type": "number"
        +    },
        +    "size": {
        +      "description": "Total number of units in the import",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedcheck_glossary_import_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "begin": {
        +      "description": "Begin offset of the import",
        +      "type": "number"
        +    },
        +    "channel": {
        +      "description": "Channel identifier used by the import",
        +      "type": "number"
        +    },
        +    "end": {
        +      "description": "End offset of the import",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Import job identifier",
        +      "type": "string"
        +    },
        +    "progress": {
        +      "description": "Import progress between 0 and 1 (1 means complete)",
        +      "type": "number"
        +    },
        +    "size": {
        +      "description": "Total number of entries in the import",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedcheck_import_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "begin": {
        +      "description": "Begin offset of the import",
        +      "type": "number"
        +    },
        +    "channel": {
        +      "description": "Channel identifier used by the import",
        +      "type": "number"
        +    },
        +    "end": {
        +      "description": "End offset of the import",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Import job identifier",
        +      "type": "string"
        +    },
        +    "progress": {
        +      "description": "Import progress between 0 and 1 (1 means complete)",
        +      "type": "number"
        +    },
        +    "size": {
        +      "description": "Total number of units in the import",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_glossary1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "createdAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "Unique glossary identifier (format: gls_*)",
        +      "type": "string"
        +    },
        +    "isPersonal": {
        +      "description": "True if the glossary is private to the owner",
        +      "type": "boolean"
        +    },
        +    "name": {
        +      "description": "Display name of the glossary",
        +      "type": "string"
        +    },
        +    "ownerId": {
        +      "description": "Identifier of the glossary owner",
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "ownerId",
        +    "createdAt",
        +    "updatedAt",
        +    "isPersonal"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_memory1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "collaboratorsCount": {
        +      "description": "Number of collaborators with access to the memory",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "createdAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "externalId": {
        +      "description": "External identifier (e.g. MyMemory ID) when imported",
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "Unique memory identifier (format: mem_*)",
        +      "type": "string"
        +    },
        +    "isPersonal": {
        +      "description": "True if the memory is private to the owner",
        +      "type": "boolean"
        +    },
        +    "name": {
        +      "description": "Display name of the memory",
        +      "type": "string"
        +    },
        +    "ownerId": {
        +      "description": "Identifier of the memory owner",
        +      "type": "string"
        +    },
        +    "secret": {
        +      "description": "Memory secret, if any",
        +      "type": "string"
        +    },
        +    "sharedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "createdAt",
        +    "updatedAt",
        +    "sharedAt",
        +    "name",
        +    "ownerId",
        +    "collaboratorsCount",
        +    "isPersonal"
        +  ],
        +  "type": "object"
        +}
    • Changeddelete_glossary1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "createdAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "Unique glossary identifier (format: gls_*)",
        +      "type": "string"
        +    },
        +    "isPersonal": {
        +      "description": "True if the glossary is private to the owner",
        +      "type": "boolean"
        +    },
        +    "name": {
        +      "description": "Display name of the glossary",
        +      "type": "string"
        +    },
        +    "ownerId": {
        +      "description": "Identifier of the glossary owner",
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "ownerId",
        +    "createdAt",
        +    "updatedAt",
        +    "isPersonal"
        +  ],
        +  "type": "object"
        +}
    • Changeddelete_glossary_entry1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "begin": {
        +      "description": "Begin offset of the import",
        +      "type": "number"
        +    },
        +    "channel": {
        +      "description": "Channel identifier used by the import",
        +      "type": "number"
        +    },
        +    "end": {
        +      "description": "End offset of the import",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Import job identifier",
        +      "type": "string"
        +    },
        +    "progress": {
        +      "description": "Import progress between 0 and 1 (1 means complete)",
        +      "type": "number"
        +    },
        +    "size": {
        +      "description": "Total number of entries in the import",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changeddelete_memory1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "collaboratorsCount": {
        +      "description": "Number of collaborators with access to the memory",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "createdAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "externalId": {
        +      "description": "External identifier (e.g. MyMemory ID) when imported",
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "Unique memory identifier (format: mem_*)",
        +      "type": "string"
        +    },
        +    "isPersonal": {
        +      "description": "True if the memory is private to the owner",
        +      "type": "boolean"
        +    },
        +    "name": {
        +      "description": "Display name of the memory",
        +      "type": "string"
        +    },
        +    "ownerId": {
        +      "description": "Identifier of the memory owner",
        +      "type": "string"
        +    },
        +    "secret": {
        +      "description": "Memory secret, if any",
        +      "type": "string"
        +    },
        +    "sharedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "createdAt",
        +    "updatedAt",
        +    "sharedAt",
        +    "name",
        +    "ownerId",
        +    "collaboratorsCount",
        +    "isPersonal"
        +  ],
        +  "type": "object"
        +}
    • Changeddelete_translation1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "begin": {
        +      "description": "Begin offset of the import",
        +      "type": "number"
        +    },
        +    "channel": {
        +      "description": "Channel identifier used by the import",
        +      "type": "number"
        +    },
        +    "end": {
        +      "description": "End offset of the import",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Import job identifier",
        +      "type": "string"
        +    },
        +    "progress": {
        +      "description": "Import progress between 0 and 1 (1 means complete)",
        +      "type": "number"
        +    },
        +    "size": {
        +      "description": "Total number of units in the import",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changeddetect_language1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "contentType": {
        +      "description": "Content type of the analysed text",
        +      "type": "string"
        +    },
        +    "language": {
        +      "description": "Detected language code (e.g., 'en-US')",
        +      "type": "string"
        +    },
        +    "predictions": {
        +      "description": "Ranked list of candidate languages with confidence scores",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "confidence": {
        +            "description": "Confidence score between 0 and 1",
        +            "type": "number"
        +          },
        +          "language": {
        +            "description": "Candidate language code",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "language",
        +          "confidence"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "language",
        +    "contentType",
        +    "predictions"
        +  ],
        +  "type": "object"
        +}
    • Changedexport_glossary1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "value": {
        +      "description": "The exported glossary content serialised as CSV",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "value"
        +  ],
        +  "type": "object"
        +}
    • Changedget_glossary1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "glossary": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "createdAt": {
        +              "description": "ISO 8601 timestamp",
        +              "type": "string"
        +            },
        +            "id": {
        +              "description": "Unique glossary identifier (format: gls_*)",
        +              "type": "string"
        +            },
        +            "isPersonal": {
        +              "description": "True if the glossary is private to the owner",
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "description": "Display name of the glossary",
        +              "type": "string"
        +            },
        +            "ownerId": {
        +              "description": "Identifier of the glossary owner",
        +              "type": "string"
        +            },
        +            "updatedAt": {
        +              "description": "ISO 8601 timestamp",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "ownerId",
        +            "createdAt",
        +            "updatedAt",
        +            "isPersonal"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "The requested glossary, or null when no glossary has that id"
        +    }
        +  },
        +  "required": [
        +    "glossary"
        +  ],
        +  "type": "object"
        +}
    • Changedget_glossary_counts1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "multidirectional": {
        +      "description": "Total entry count for multidirectional glossaries",
        +      "type": "number"
        +    },
        +    "unidirectional": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "description": "Entry counts keyed by language code for unidirectional glossaries",
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedimport_glossary_csv1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "begin": {
        +      "description": "Begin offset of the import",
        +      "type": "number"
        +    },
        +    "channel": {
        +      "description": "Channel identifier used by the import",
        +      "type": "number"
        +    },
        +    "end": {
        +      "description": "End offset of the import",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Import job identifier",
        +      "type": "string"
        +    },
        +    "progress": {
        +      "description": "Import progress between 0 and 1 (1 means complete)",
        +      "type": "number"
        +    },
        +    "size": {
        +      "description": "Total number of entries in the import",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedimport_tmx1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "begin": {
        +      "description": "Begin offset of the import",
        +      "type": "number"
        +    },
        +    "channel": {
        +      "description": "Channel identifier used by the import",
        +      "type": "number"
        +    },
        +    "end": {
        +      "description": "End offset of the import",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Import job identifier",
        +      "type": "string"
        +    },
        +    "progress": {
        +      "description": "Import progress between 0 and 1 (1 means complete)",
        +      "type": "number"
        +    },
        +    "size": {
        +      "description": "Total number of units in the import",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "id"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_glossaries1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "items": {
        +      "description": "Glossaries accessible to the authenticated account",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "createdAt": {
        +            "description": "ISO 8601 timestamp",
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Unique glossary identifier (format: gls_*)",
        +            "type": "string"
        +          },
        +          "isPersonal": {
        +            "description": "True if the glossary is private to the owner",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "Display name of the glossary",
        +            "type": "string"
        +          },
        +          "ownerId": {
        +            "description": "Identifier of the glossary owner",
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "description": "ISO 8601 timestamp",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "ownerId",
        +          "createdAt",
        +          "updatedAt",
        +          "isPersonal"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_languages1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "items": {
        +      "description": "Supported language codes (e.g., 'en-US', 'it-IT')",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_memories1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "items": {
        +      "description": "Translation memories accessible to the authenticated account",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "collaboratorsCount": {
        +            "description": "Number of collaborators with access to the memory",
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "createdAt": {
        +            "description": "ISO 8601 timestamp",
        +            "type": "string"
        +          },
        +          "externalId": {
        +            "description": "External identifier (e.g. MyMemory ID) when imported",
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Unique memory identifier (format: mem_*)",
        +            "type": "string"
        +          },
        +          "isPersonal": {
        +            "description": "True if the memory is private to the owner",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "Display name of the memory",
        +            "type": "string"
        +          },
        +          "ownerId": {
        +            "description": "Identifier of the memory owner",
        +            "type": "string"
        +          },
        +          "secret": {
        +            "description": "Memory secret, if any",
        +            "type": "string"
        +          },
        +          "sharedAt": {
        +            "description": "ISO 8601 timestamp",
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "description": "ISO 8601 timestamp",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "createdAt",
        +          "updatedAt",
        +          "sharedAt",
        +          "name",
        +          "ownerId",
        +          "collaboratorsCount",
        +          "isPersonal"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedtranslate5 fields changed
      • changedInput schema / properties / text / items / additionalProperties
        Previous value: -falseNew value: +{}
      • addedInput schema / properties / text / items / properties / text / description
        Added value: +"Text content of the block"
      • addedInput schema / properties / text / items / properties / translatable / description
        Added value: +"Whether the block should be translated. Omitted on response blocks the engine treats as wholly translatable."
      • changedInput schema / properties / text / items / required
        Previous value: -[
        -  "text",
        -  "translatable"
        -]New value: +[
        +  "text"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "items": {
        +      "description": "Translated text blocks, in the same order and structure as the input. Blocks marked translatable: false are preserved verbatim.",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "text": {
        +            "description": "Text content of the block",
        +            "type": "string"
        +          },
        +          "translatable": {
        +            "description": "Whether the block should be translated. Omitted on response blocks the engine treats as wholly translatable.",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedupdate_glossary1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "createdAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "Unique glossary identifier (format: gls_*)",
        +      "type": "string"
        +    },
        +    "isPersonal": {
        +      "description": "True if the glossary is private to the owner",
        +      "type": "boolean"
        +    },
        +    "name": {
        +      "description": "Display name of the glossary",
        +      "type": "string"
        +    },
        +    "ownerId": {
        +      "description": "Identifier of the glossary owner",
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "ownerId",
        +    "createdAt",
        +    "updatedAt",
        +    "isPersonal"
        +  ],
        +  "type": "object"
        +}
    • Changedupdate_memory1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "collaboratorsCount": {
        +      "description": "Number of collaborators with access to the memory",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "createdAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "externalId": {
        +      "description": "External identifier (e.g. MyMemory ID) when imported",
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "Unique memory identifier (format: mem_*)",
        +      "type": "string"
        +    },
        +    "isPersonal": {
        +      "description": "True if the memory is private to the owner",
        +      "type": "boolean"
        +    },
        +    "name": {
        +      "description": "Display name of the memory",
        +      "type": "string"
        +    },
        +    "ownerId": {
        +      "description": "Identifier of the memory owner",
        +      "type": "string"
        +    },
        +    "secret": {
        +      "description": "Memory secret, if any",
        +      "type": "string"
        +    },
        +    "sharedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "description": "ISO 8601 timestamp",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "createdAt",
        +    "updatedAt",
        +    "sharedAt",
        +    "name",
        +    "ownerId",
        +    "collaboratorsCount",
        +    "isPersonal"
        +  ],
        +  "type": "object"
        +}
  3. 13 tool updatesv1.0.2
    • Addedadd_glossary_entry
    • Addedcheck_glossary_import_status
    • Addedcreate_glossary
    • Addeddelete_glossary
    • Addeddelete_glossary_entry
    • Addeddetect_language
    • Addedexport_glossary
    • Addedget_glossary
    • Addedget_glossary_counts
    • Addedimport_glossary_csv
    • Addedlist_glossaries
    • Changedtranslate8 fields changed
      • addedInput schema / properties / content_type
        Added value: +{
        +  "description": "Specifies the content type of the text. Autodetected if omitted.",
        +  "enum": [
        +    "text/plain",
        +    "text/html",
        +    "application/xliff+xml"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / glossaries
        Added value: +{
        +  "description": "Array of glossary IDs to apply during translation (max 10). IDs must match format: gls_* (e.g., ['gls_xyz123', 'gls_abc456']). Glossaries enforce specific terminology and terms.",
        +  "items": {
        +    "maxLength": 255,
        +    "minLength": 1,
        +    "pattern": "^gls_[a-zA-Z0-9_-]+$",
        +    "type": "string"
        +  },
        +  "maxItems": 10,
        +  "type": "array"
        +}
      • changedInput schema / properties / instructions / description
        Previous value: -"A list of instructions to adjust the network’s behavior regarding the output (e.g., 'Use a formal tone')."New value: +"Optional list of short localization directives to adjust translation output. Each instruction MUST be no more than 20 words. These are NOT free-form LLM prompts — they are expert localization directives about formality, tone, or domain-specific terminology. Only provide instructions when the content specifically requires them; omitting instructions for general content preserves higher translation quality. Do NOT combine contradictory instructions (e.g., formal and informal tone together). Examples: 'Translate formally', 'Use a creative and concise tone', 'Make translation gender-neutral', 'Mask any price with the [price] placeholder', 'Use quotation marks (« ») for quotations'."
      • addedInput schema / properties / no_trace
        Added value: +{
        +  "description": "Privacy flag. If set to true, the request content will not be stored or traced by Lara. Use for sensitive content.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / priority
        Added value: +{
        +  "description": "Translation priority. 'normal' for real-time translations, 'background' for batch processing with lower priority.",
        +  "enum": [
        +    "normal",
        +    "background"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / reasoning
        Added value: +{
        +  "description": "Enables Lara Think multi-step linguistic analysis. Can increase processing time up to 10x but may improve translation quality for complex texts.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / style
        Added value: +{
        +  "description": "Controls how the translation balances accuracy against natural readability. 'faithful' stays close to the source, 'fluid' prioritizes natural readability, 'creative' allows more freedom in the translation.",
        +  "enum": [
        +    "faithful",
        +    "fluid",
        +    "creative"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / timeout_in_millis
        Added value: +{
        +  "description": "Custom timeout for the translation request in milliseconds. Max: 300000ms (5 minutes). Useful for very long texts.",
        +  "exclusiveMinimum": 0,
        +  "maximum": 300000,
        +  "type": "integer"
        +}
    • Addedupdate_glossary
  4. 10 tool updatesv1.0.0
    • Addedadd_translation
    • Addedcheck_import_status
    • Addedcreate_memory
    • Addeddelete_memory
    • Addeddelete_translation
    • Addedimport_tmx
    • Addedlist_languages
    • Addedlist_memories
    • Changedtranslate2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / adapt_to
        Added value: +{
        +  "description": "A list of translation memory IDs for adapting the translation.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedupdate_memory
  5. 1 tool update
    • First observedtranslate

TDQS

B3.4/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target distinct resources (languages, memories, glossaries, translations, import jobs), and prefixes like list_/create_/update_/delete_ clarify intent. Minor overlap risk between check_import_status and check_glossary_import_status, and between add_translation (a memory unit) and add_glossary_entry, but descriptions distinguish them.

Naming Consistency4/5

Strong verb_noun snake_case pattern throughout (list_memories, create_glossary, delete_glossary_entry). A few mild deviations: the bare 'translate' verb and 'add_translation' (which operates on memories, not translation) are less self-descriptive than the rest.

Tool Count4/5

22 tools is on the heavier side but justified by three distinct sub-domains (translation, translation memories, glossaries) each needing CRUD plus import/export and async status polling. Each tool earns its place, though it sits near the upper bound of comfortable scope.

Completeness4/5

Coverage is broad: translation and detection, memory CRUD with translation units and TMX import, glossary CRUD with entries, CSV import/export, and counts. Minor gaps remain (e.g., no explicit list/get for memory translation units or TMX export), but core lifecycle workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers