Skip to main content
Glama

Translate a resume

translate_resume

Translate a resume into another language as a NEW inactive copy named after the language; the original resume is not changed. Skill level and category and language name and proficiency stay fixed English keys, which the rendered resume shows in its language. Runs asynchronously — returns a task_id immediately and a message is posted into the user's chat when the copy is ready or the translation fails; get_task_status(task_id) reports progress and the outcome. Consumes one resume translation from the user's plan. If this resume was already translated into that language, returns the existing copy with status 'reused' and spends nothing. target_language is one of: en_EN, ru_RU, es_ES, pt_BR, de_DE, fr_FR, it_IT, tr_TR, hi_IN, uk_UA, id_ID, ja_JP. When the user asked for more than the translation, pass the rest as follow_up_instruction: the ready message offers it on the new copy with one tap. Returns 'not_found' if the resume does not belong to the current user, 'already_in_language' if the resume is already written in that language, 'limit_exceeded' if the plan quota is reached, and 'invalid_payload' for an unknown language code.

Input Schema

NameRequiredDescriptionDefault
inputYes

Output Schema

NameRequiredDescriptionDefault
statusYes'processing' — the translation runs asynchronously; 'reused' — the copy exists.
task_idNoBackground task id, or null when an existing copy was reused.
resume_idNoId of the translated copy: set now when reused, otherwise it arrives with the chat message.
source_resume_idYesId of the resume being translated; it is not changed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $defs / TranslateResumeInput / properties / target_language / description
      Previous value: -"Locale code of the language to translate into, e.g. 'en_EN', 'de_DE', 'es_ES'."New value: +"The language to translate into: a locale code ('de_DE'), a language code ('de', 'de-AT', 'en_US') or its English name ('German')."
  2. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only declare the basic safety profile (readOnlyHint=false, destructiveHint=false), so the description carries real weight here and delivers: async execution with an immediate task_id, a chat message on completion/failure, plan-quota consumption, and a reuse-without-spend path. The only nit is that the duplicate-call reuse behavior reads as idempotent while idempotentHint=false, though the first invocation does still spawn a task, so it is not a true contradiction.

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 outcome (new inactive copy) and then layered by importance: async behavior, cost, reuse, language list, follow-up, error codes. Dense and information-rich, but on the long side; the language enumeration and error list could be trimmed or deferred to the schema.

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?

With an output schema present, the description need not describe return values, and it still covers everything an agent needs: side effects (new copy, quota spend), async contract, dedupe behavior, the follow-up parameter's downstream effect, and the full failure surface. Nothing material is missing.

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 description enumerates the twelve accepted target_language codes, which is useful guidance, and explains follow_up_instruction's purpose and one-tap delivery ('the ready message offers it on the new copy'). It slightly tightens the schema's looser claim that bare language codes or English names like 'German' are accepted, but the semantics added are net positive.

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 opening sentence states a specific verb (translate), resource (resume), and the exact resulting artifact ('a NEW inactive copy named after the language'), and explicitly distinguishes the operation from in-place edits ('the original resume is not changed'). This separates it cleanly from siblings like create_resume_version or rename_resume without opening their schemas.

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 states when to use it, routes progress checks to the named sibling get_task_status(task_id), defines the dedupe path ('if this resume was already translated into that language, returns the existing copy... spends nothing'), and covers the follow-up case where the user asked for more than translation. Explicit error semantics (already_in_language, limit_exceeded) further define when the call is valid.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.