Skip to main content
Glama

Localize Visuals Into Multiple Languages

localize_generation
Destructive

Translate all visuals in a completed generation into up to 10 target languages in one call, preserving layout, colors, fonts, and imagery while only the text changes.

Instructions

Translate the visuals of a completed generation into one or more target languages. Each visual is translated in place (image-to-image) — the layout, colors, fonts, icons and imagery stay EXACTLY the same, only the text changes language. Canvora supports 150+ languages including RTL scripts (Arabic, Hebrew, Urdu) and CJK.

Perfect for localizing a campaign: one LinkedIn carousel becomes Spanish, Japanese, Arabic and German variants in a single call.

Costs 10 credits per translated image, per language (a 6-slide deck into Spanish = 60 credits). Up to 10 languages per call. Returns one generation ID per language — poll each with get_generation until status is "completed".

This translates ALL visuals in the chosen generation. If more than one generation exists in the chat, localize the specific generation the user is referring to — ask which one if it is unclear.

SEMANTICS: this translates EVERY visual in the generation (each translated visual costs 10 credits). To translate just ONE visual (e.g. "translate the Instagram post to Spanish"), do NOT use this tool — use edit_image on that image with an instruction like "Translate all visible text in this image into Spanish", which translates only that visual.

IMPORTANT: Confirm the target languages with the user before calling.

Localized visuals are saved to the user's Canvora workspace (account and brand kit at canvora.ai) and are also returned as preview/downloadable URLs.

Input Schema

NameRequiredDescriptionDefault
languagesYes
generation_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the destructiveHint/openWorldHint annotations: quantifies cost (10 credits per image per language, with a worked 6-slide example), caps languages at 10, explains that every visual in the generation is translated, and describes where output lands (Canvora workspace plus preview/downloadable URLs). It also discloses the async pattern: one generation ID returned per language, poll each with get_generation.

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 purpose, then cost, then the critical SEMANTICS/IMPORTANT blocks, so a skimming agent sees the routing rule. It is longer than average and repeats the translation scope (ALL visuals, single call) more than once, but every section carries operational value.

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 no output schema, the description still explains the return shape (a generation ID per language, pollable via get_generation until 'completed') and the resulting artifacts. Cost, caps, side effects, and the sibling escape hatch are all present, so an agent can invoke it correctly without further inference.

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 0%, so the description must carry the load: it explains that languages is an array of one or more targets (150+ supported, RTL/CJK, max 10 per call) and that generation_id refers to a completed generation inside a chat, with guidance to disambiguate when several exist. It does not specify exact language code format (e.g. BCP-47 vs. names), which is the one gap.

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 the visuals of a completed generation into target languages) and immediately constrains it to in-place image-to-image translation of an existing generation. This clearly differentiates it from siblings like edit_image and create_variation.

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?

Explicitly names the exclusion path: for a single visual, do NOT use this tool, use edit_image with a translation instruction. It also says to ask which generation when multiple exist and to confirm target languages with the user before calling, covering the main ambiguity cases.

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