Skip to main content
Glama

Server Details

Manage translation projects, phrases, locales, dictionaries, and team data with secure, organization-scoped tools and interactive translation views.

Ownership verified
Status
Healthy
Uptime
86.0% over 43 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly distinct resource+action purposes, but get_project and show_project_overview overlap substantially—both return a project's default locale, configured locales, and timestamps, making selection hard. The phrase readers (list_phrases, search_phrases, export_locale_dictionary, get_phrase) overlap but descriptions successfully differentiate them.

Naming Consistency5/5

All 17 tools follow a consistent snake_case verb_noun pattern (add_locale, delete_phrase, list_projects, update_phrase, find_missing_translations, show_project_overview). No mixed conventions or ambiguous verbs appear.

Tool Count4/5

17 tools for a full localization management domain (projects, locales, phrases, sharing, QA) is reasonable and each earns a place, though it edges toward heavy. Nothing feels redundant except the project overview/get pair.

Completeness3/5

Phrase lifecycle is well covered (add, get, list, update, delete, search, share), but projects lack a delete operation and team support is read-only with no invite/remove, an explicit gap noted in the description. Delete coverage for projects/locales is a notable missing operation.

Available Tools

17 tools
add_localeAdd a language and translate itA
Destructive
Inspect

Use this when someone asks to add a new language to a project and translate their strings into it. Returns the updated language list and how many strings were machine-translated, one per key, all before anything is saved, so a very large project can time out. Not for a language the project already has.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoTranslation model id; defaults to gpt-6-luna
localeYesLocale code to add, such as it or pt-BR
contextNoNote applied to every translation in this run, up to 600 characters
projectYesProject id or name

Output Schema

ParametersJSON Schema
NameRequiredDescription
localeYes
statusYes
localesYes
projectYes
translationCountYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds critical behavioral context beyond annotations: it specifies the return payload (language list and translation count), notes that translations occur before saving, and warns that large projects can time out. However, it doesn't elaborate on the destructive nature (e.g., what data is overwritten or affected).

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 tightly packed sentences that are front-loaded with purpose and usage, then behavioral details. No wasted words; every sentence adds 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?

Given the complexity (dual add+translate operation), the description covers what the tool does, when to use it, what it returns, and key caveats (timeout risk). With an output schema present, it doesn't need to detail return values. Annotations cover safety aspects. Nothing critical is missing for an agent to decide and invoke correctly.

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%, so all parameter descriptions are in the schema. The description adds no parameter-level details beyond what the schema provides. It mentions 'language' and 'strings' generically but doesn't map to specific parameters like locale, model, or context.

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 (add) and resource (language/locale), with the implied translation action. Distinguishes from siblings clearly - no other tool handles adding a locale. The description makes the dual nature (add + translate) explicit.

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 states when to use ('when someone asks to add a new language...') and provides a clear exclusion ('Not for a language the project already has'). This prevents the agent from attempting to add an existing locale.

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

add_phraseAdd a string and translate itA
Destructive
Inspect

Use this when someone asks to add a new string or key to their app's translations. Returns the created key with one machine translation per configured locale, made from the source text in the default locale. A key that already exists returns already-exists and is left unchanged. Not for changing an existing translation.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesNew key, 1 to 256 characters
modelNoTranslation model id; defaults to gpt-6-luna
valueNoSource text in the default locale, up to 2,000 characters; defaults to the key itself
contextNoNote for the translator that disambiguates the string, up to 600 characters
projectYesProject id or name

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
statusYes
localesYes
projectYes
defaultLocaleYes
translationCountYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description adds genuinely non-obvious behavior: the collision case returns already-exists and leaves the key unchanged, and creation auto-generates one translation per configured locale from the default-locale source text. It does not explain why the operation is flagged destructive or whether generated translations overwrite anything, 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 tight sentences: trigger, behavior/return, and exclusion. The most decision-relevant information (when to use it and what it returns) is front-loaded with no filler.

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?

Return values are covered by an output schema and the safety profile by annotations, so the description's remaining job is trigger conditions and edge behavior — both supplied via the already-exists no-op rule. An agent has everything needed to call this correctly.

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 every parameter (key length, model default, value default, context, project) is already documented in the schema. The description restates the value/model semantics at a high level ("source text in the default locale") without adding syntax or format detail, so the baseline 3 applies.

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 (add a string/key to translations) and summarizes the return payload: the created key plus one machine translation per configured locale. It is clearly distinguishable from update_phrase and delete_phrase, and the sibling set confirms this is the creation path.

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?

"Use this when someone asks to add a new string or key" gives a clear trigger condition, and "Not for changing an existing translation" supplies an explicit exclusion. It stops short of naming update_phrase as the alternative for that case, so the routing 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.

add_projectCreate a localization projectA
Destructive
Inspect

Use this when someone asks to create a new localization project with a given name and languages. Returns the new project with its default locale and locales; if the name is taken it returns already-exists and creates nothing. Not for adding a language to an existing project.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the new project, 1 to 128 characters; a URL-safe slug such as my-app is easiest to reference later
localesNoOther locale codes to start with, such as it or de; the default locale is added automatically
defaultLocaleYesLocale code of the source language, such as en

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
projectYes

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, openWorldHint=false, and idempotentHint=false, so the safety profile is covered. Beyond that, the description adds real behavioral context absent from the annotations: the duplicate-name case returns 'already-exists' and creates nothing, and the success case returns the project with its default locale and locales.

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 sentences, front-loaded with the trigger condition, followed by return/error behavior and the exclusion. No sentence is redundant and nothing is buried.

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 further explanation, yet the description still summarizes the meaningful returns and the failure mode. With full parameter coverage and annotations carrying the safety profile, nothing needed to call this tool correctly 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 the schema already documents name, locales, and defaultLocale fully, including format and the fact that the default locale is added automatically. The description adds no syntax or format detail 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.

Purpose5/5

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

The description states a specific verb and resource ('create a new localization project') and scopes it with the inputs that matter (name and languages). It also carves out the adjacent operation, so an agent can distinguish it from add_locale without opening either 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?

It gives an explicit trigger ('Use this when someone asks to create a new localization project') and a clear exclusion ('Not for adding a language to an existing project'). The exclusion implies add_locale but never names it, so routing is clear but not maximally explicit.

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

delete_phraseDelete a string in every languageA
Destructive
Inspect

Use this when someone asks to remove a key from their translations. Returns how many language rows were deleted and which other projects shared them; a shared string is deleted permanently for those projects too. Not for removing only one language's translation.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesExact key to delete in every language
projectYesProject id or name that has the key

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
statusYes
projectYes
sharedProjectsYesOther projects the deleted string was also removed from
deletedTranslationCountYes

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 idempotentHint=false, so safety is covered. The description adds genuinely new context beyond them: the cross-project blast radius ('a shared string is deleted permanently for those projects too') and the deletion count returned. It does not explain the non-idempotent behavior, which the annotations flag.

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 with the usage trigger front-loaded, then the side-effect warning, then the exclusion. Every sentence carries information and none is 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?

With an output schema present (return values needn't be described) and annotations covering the safety profile, the description supplies the remaining critical piece an agent needs: the permanent, multi-project consequence of deleting a shared string. Nothing essential 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 both parameters (key, project) are fully documented in the schema. The description reinforces that the key is deleted 'in every language' but adds no syntax, format, or lookup guidance beyond what is already there. Baseline 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 (delete/remove) and resource (a key/string in translations) with the critical scope qualifier 'in every language', which distinguishes it from the many sibling phrase tools like update_phrase or add_phrase. 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?

'Use this when someone asks to remove a key from their translations' gives clear positive context, and 'Not for removing only one language's translation' gives an explicit exclusion. It stops short of naming the sibling tool that handles single-language removal, but the boundary is unambiguous.

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

export_locale_dictionaryExport one language's stringsA
Read-onlyIdempotent
Inspect

Use this when someone wants the key and value pairs of one language, for example to review or copy a translation file. Returns up to 50 entries per call (25 by default) sorted by key, values cut to 500 characters, with nextSkip for the next page. Not for a complete file download, which the MultiLocale CLI provides.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoKeys to skip in alphabetical order, for paging: pass the previous nextSkip; defaults to 0, at most 10000
limitNoEntries to return, from 1 to 50; defaults to 25
projectYesProject name; an id matches nothing
languageYesLocale code to export, such as en

Output Schema

ParametersJSON Schema
NameRequiredDescription
skipYes
statusYes
entriesYesKey and value pairs sorted by key, values cut to 500 characters
hasMoreYes
projectYes
languageYes
nextSkipYesPass as skip to get the next page; null on the last page
returnedCountYes
valuesTruncatedYes
offsetCapReachedYes

TDQS

A4.3/5.0
Behavior5/5

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

Despite annotations already covering readOnly/idempotent/non-destructive, the description adds substantial behavior: page size (25 default, 50 max), alphabetical sort by key, 500-character value truncation, and the nextSkip paging contract. This is exactly the operational detail an agent needs to page correctly.

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 sentences, front-loaded with the use case followed by the behavioral/paging contract and the exclusion. No filler and every clause carries 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?

With annotations covering safety and a full output schema plus 100% parameter coverage, the description only needs to add operational context – and it does, via paging, sorting, and truncation limits, plus a pointer away from the CLI for full downloads.

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%, so all four parameters are already documented with defaults and bounds. The description's mention of 50/25 and nextSkip largely restates the schema, adding paging semantics but no new parameter-level meaning; 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 states a specific verb and resource: returning key/value pairs for a single language, tagged by intent ("to review or copy a translation file"). It explicitly rules out a complete file download, though it does not distinguish itself from sibling tools like list_phrases or search_phrases, which also surface phrase data.

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?

It gives both a positive trigger (reviewing or copying a translation file) and an explicit exclusion (complete file download belongs to the MultiLocale CLI). The exclusion points at a non-MCP alternative rather than a sibling tool, so the routing guidance is clear but not fully connected to the tool list.

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

find_duplicate_phrase_valuesFind duplicate source stringsA
Read-onlyIdempotent
Inspect

Use this when someone wants to clean up a project by finding keys that repeat the same default-language text. Returns up to 25 repeated values with the keys that share them, scanning 1,000 default-locale strings by default and at most 2,000. Not for untranslated strings.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject id or name
scanLimitNoDefault-locale strings to scan, from 1 to 2000; defaults to 1000

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
projectYes
scanLimitYes
duplicatesYesUp to 25 default-locale values used by more than one key, with up to 10 keys each and the other projects sharing them
defaultLocaleYes
scanTruncatedYes
duplicateCountYes
phrasesScannedYes
duplicatesTruncatedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare a safe, idempotent, read-only, closed-world operation, so the safety profile is covered. The description adds non-obvious behavioral detail the annotations lack: the 25-result cap, the 1,000 default scan and 2,000 hard ceiling. It does not explain truncation semantics or ordering, keeping it from 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.

Conciseness5/5

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

Three sentences, zero filler: the usage trigger is front-loaded, the output shape follows, and the exclusion closes it out. Every sentence earns its place.

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?

The tool is a simple, read-only two-parameter query. Although an output schema exists and return values need not be explained, the description still usefully summarizes the return shape (repeated values plus the keys sharing them). Nothing needed to call it correctly 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 coverage is 100%, so both parameters are already documented, including scanLimit's range and 1000 default. The description restates the same default and ceiling rather than adding syntax or meaning beyond the schema; baseline 3 applies.

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 ('finding keys that repeat the same default-language text') and the goal (clean up a project). This clearly distinguishes it from sibling diagnostics like find_missing_translations even without naming them.

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 a concrete when-to-use trigger ('when someone wants to clean up a project by finding keys that repeat...') and an explicit exclusion ('Not for untranslated strings') that routes the agent toward find_missing_translations. It stops short of naming that alternative sibling directly, so it is not a full 5.

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

find_missing_translationsFind missing translationsA
Read-onlyIdempotent
Inspect

Use this when someone asks which strings are not translated yet, or how complete each language is. Returns completion percentages and up to 25 missing keys per locale, for one locale or up to 10, compared with the default locale. Nothing is translated or written. Not for filling in the missing translations.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject id or name
languageNoOne locale code to check; omit to check the configured locales
scanLimitNoStrings to scan per locale, from 1 to 2000; defaults to 1000
localeLimitNoHow many configured locales to check when language is omitted, from 1 to 10; defaults to 10

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
localesYesOne row per checked locale with its completion and up to 25 missing keys; status partial means a scan cap was reached
projectYes
scanLimitYes
defaultLocaleYes
localesTruncatedYes
sourceScanTruncatedYes
sourcePhrasesScannedYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/destructiveHint=false, and the description reinforces this with 'Nothing is translated or written.' It also adds concrete behavioral caps not in the annotations: up to 25 missing keys per locale, 1 or up to 10 locales, and comparison against the default locale.

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 sentences, zero filler: the trigger comes first, the return shape second, the scope and exclusion last. Every sentence earns its place.

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 a full schema, annotations covering the safety profile, and an output schema present, the description supplies everything else an agent needs: trigger, return granularity, locale bounds, and the read-only guarantee.

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 its parameter descriptions already explain language, scanLimit, and localeLimit including the 1-10 range and default. The description's 'for one locale or up to 10' largely restates the localeLimit schema text rather than adding new meaning, so baseline 3 applies.

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 ('which strings are not translated yet', completion completeness) and explicitly bounds scope against the fill-in sibling: 'Not for filling in the missing translations.' An agent can tell this apart from update_phrase/add_phrase without opening either schema.

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 an explicit trigger ('Use this when someone asks which strings are not translated yet, or how complete each language is') plus an explicit exclusion ('Not for filling in the missing translations'), which is exactly the when/when-not framing needed next to mutation siblings like add_phrase.

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

get_phraseShow one string's translationsA
Read-onlyIdempotent
Inspect

Use this when someone asks how one exact key is translated, in every language or in one. Returns that key's text per locale, up to 24 locales and 2,000 characters each, with machine-translation flags and the projects sharing it, and renders a phrase card. Not for searching keys by text.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesExact key, matched case-sensitively
projectYesProject name; an id matches nothing
languageNoOne locale code such as en or it; every language when absent

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
statusYes
projectYes
translationsYesOne row per locale, up to 24, values cut to 2,000 characters; projects lists every project sharing the row
translationCountYes
translationsTruncatedYes

TDQS

A4.5/5.0
Behavior4/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 safety is covered. The description adds genuinely new behavioral context: per-locale cap of 24 locales, 2,000 characters each, machine-translation flags, and that it renders a phrase card. It does not discuss errors when a key is absent, which keeps it from 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.

Conciseness5/5

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

Two tightly packed sentences with zero filler; the usage trigger and the sibling exclusion are front-loaded, and the limits and rendered output are packed into the same second sentence.

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, return values need not be spelled out, yet the description still usefully sketches them (per-locale text, MT flags, sharing projects, phrase card). Combined with annotations covering safety and 100% schema coverage, an agent has everything needed to call this correctly.

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 all three parameters are already documented including the case-sensitive exact match and the 'every language when absent' default. The description mirrors this at a summary level ('one exact key', 'every language or in one') without adding new semantics, so the baseline 3 applies.

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 ('how one exact key is translated, in every language or in one') and explicitly distinguishes itself from search_phrases with 'Not for searching keys by text.' An agent can route between get_phrase and search_phrases without opening either schema.

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 an explicit trigger ('Use this when someone asks how one exact key is translated'), a scope condition (every language vs one), and an exclusion ('Not for searching keys by text') that names the competing sibling capability.

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

get_projectGet project detailsA
Read-onlyIdempotent
Inspect

Use this when someone asks about one localization project, such as which languages it has or its default locale. Returns the project's id, name, default locale, configured locales and creation and edit times. Not for how complete its translations are.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdOrNameYesProject id or name

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
projectYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds the useful scope signal that this is a single-project lookup and enumerates returned fields, but says nothing about behavior on a missing/ambiguous project name — relevant since the parameter accepts a name as well as an 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?

Three tight sentences with the usage trigger front-loaded, followed by return contents and the exclusion. No filler, nothing to cut.

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 explain return values in depth, and annotations cover the safety profile. The description still names the returned fields and the scope limit, leaving nothing an agent needs in order to call it correctly.

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 parameter is documented in the schema as 'Project id or name'. The description adds only the notion that it refers to one project and offers no format, ambiguity, or resolution guidance beyond that, so baseline 3 applies.

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 ('get one localization project') and explicitly delimits what it is not ('Not for how complete its translations are'), which routes the agent away from the overview/statistics sibling. An agent can distinguish this from show_project_overview without opening either 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?

Gives a concrete triggering condition ('when someone asks about one localization project, such as which languages it has or its default locale') and an exclusion. It doesn't name the alternative tool to use for completeness questions, so it stops just short of a full when/when-not/alternative statement.

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

list_phrasesList a project's stringsA
Read-onlyIdempotent
Inspect

Use this when someone asks to see the translation strings in a project, optionally in one language or for one key. Returns up to 100 phrases with id, key, language and value, plus the total count. Not for finding strings by the words they contain.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoOnly this exact key
projectYesProject name; an id matches nothing
languageNoOnly strings in this locale code, such as en, it or pt-BR

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
phrasesYesUp to 100 phrases, one row per key and language, values cut to 2,000 characters; phraseCount has the total
phraseCountYes
phrasesTruncatedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description usefully adds behavioral context the annotations do not: a 100-item cap, the returned fields (id, key, language, value), and the total count.

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 the usage trigger followed by return shape and the negative boundary. No filler and nothing 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?

A read-only list tool with full schema coverage and an output schema; the description covers when to use it, what it returns and its exclusion, which is everything an agent needs to invoke it correctly.

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%, so the schema already documents project, language and key with formats. The description only restates the optional language/key narrowing and adds no syntax or semantics beyond what's structured, so the baseline 3 applies.

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 (list) and resource (translation strings/phrases) with scope (a project), and names the distinguishing constraint that it is not a content search. An agent can distinguish it from search_phrases and get_phrase without opening a 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?

Gives a clear triggering condition ('when someone asks to see the translation strings in a project') and an explicit exclusion ('Not for finding strings by the words they contain'). It stops short of naming search_phrases as the alternative, so the routing is implied rather than spelled out.

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

list_projectsList your localization projectsA
Read-onlyIdempotent
Inspect

Use this when someone asks which localization projects they have in MultiLocale. Returns each project's id, name, default locale, languages and timestamps, up to 100 projects. Not for listing the strings inside a project.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
projectsYesUp to 100 projects; projectCount has the total
projectCountYes
projectsTruncatedYes

TDQS

A4.5/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 genuinely new operational context beyond that: a hard result cap of 100 projects, which tells the agent to consider pagination or narrowing. It does not discuss auth scoping or ordering, but the annotations carry most of the behavioral burden.

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 sentences with the use case front-loaded, then the exclusion. Every clause earns its place and nothing is repeated from the title or annotations.

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-value shape is already machine-documented, and the description still adds the useful 100-project bound. For a zero-parameter, read-only list tool, an agent has everything needed to call it correctly and know its limits.

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 and the schema has no properties, so there is nothing for the description to disambiguate. Baseline for a no-parameter tool is 4; the description adds no parameter guidance because none is needed.

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 ('List your localization projects') scoped to the caller's own projects, and enumerates the returned fields (id, name, default locale, languages, timestamps). The closing clause explicitly distinguishes it from the string-listing siblings, so an agent can separate it from list_phrases without opening either 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?

'Use this when someone asks which localization projects they have' gives an explicit triggering condition, and 'Not for listing the strings inside a project' gives a clear exclusion. It stops short of naming the alternative tool (e.g., list_phrases) directly, leaving the agent to map the exclusion to a sibling.

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

list_team_membersList your teamA
Read-onlyIdempotent
Inspect

Use this when someone asks who is on their MultiLocale team or what role each person has. Returns each member's display name and role, up to 100 members (no emails, ids or contact details). Not for inviting or removing people.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
membersYesDisplay name and role only. Email addresses, member ids, role ids, phone, country and signup device details are never returned.
memberCountYes
membersTruncatedYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive. The description adds genuinely new behavioral context: a 100-member cap and explicit exclusion of emails, ids, and contact details in the response, which is meaningful privacy/scope information.

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, front-loaded with the trigger condition, then return shape, then exclusion. Every sentence earns its place with no redundancy.

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 zero-parameter read tool with annotations covering the safety profile and an output schema covering returns, the description supplies the trigger, scope limits, and return summary. Nothing an agent needs 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 tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to compensate for, and it correctly avoids inventing parameter-like details.

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 (list team members) with the exact return content (display name and role). It also explicitly excludes the invite/remove operations, making it distinguishable from write-oriented siblings.

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?

Names the trigger condition ('when someone asks who is on their MultiLocale team or what role each person has') and explicitly states what it is not for ('Not for inviting or removing people'). Both when-to-use and when-not-to-use are covered.

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

search_phrasesSearch strings by textA
Read-onlyIdempotent
Inspect

Use this when someone asks to find translation strings that contain a word or phrase, in their keys or text. Returns up to 100 matches with id, key, language and value from a case-insensitive match within one project. Not for one exact key.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText to find in keys or values, case-insensitive, 1 to 200 characters
projectYesProject name; an id matches nothing
languageNoOnly search this locale code; every language when absent

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
phrasesYesUp to 100 matching phrases, values cut to 2,000 characters; phraseCount has the total
phraseCountYes
phrasesTruncatedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely useful behavior beyond that: a hard cap of 100 matches and the fact that matching is case-insensitive and confined to one project.

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 sentences, no wasted words, and the trigger plus scope are front-loaded ahead of the exclusion. Every clause carries information an agent needs.

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, return-value detail is optional, yet the description still conveys the match cap and project scoping. Nothing an agent needs in order to call this correctly 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 coverage is 100%, so query, project and language semantics (case-insensitive, locale restriction, id does not match) are already fully documented in the schema. The description adds no syntax or format detail beyond it, so the baseline 3 applies.

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 (find/search) and resource (translation strings by key or text content) and carves out its scope with 'Not for one exact key', which separates it from get_phrase. An agent can select this 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?

Gives an explicit trigger ('Use this when someone asks to find translation strings that contain a word or phrase') and an exclusion ('Not for one exact key'). The alternative tool (get_phrase) is implied rather than named, so it falls just short of a 5.

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

share_phraseShare a string with other projectsA
DestructiveIdempotent
Inspect

Use this when someone asks to reuse a key's translations in other projects, such as a common button label. Returns the target projects and how many language rows were attached, up to 25 targets; later edits to that string apply in every attached project. Not for a copy that can differ per project.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesExact key to share, with all of its languages
projectYesProject id or name that already has the key
targetProjectsYes1 to 25 project ids or names to attach the key to

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
statusYes
projectYes
targetProjectsYes
translationCountYes

TDQS

A4.5/5.0
Behavior4/5

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

The description adds real behavioral context beyond the annotations: sharing is live-linked, so later edits propagate to every attached project, and the response reports target projects plus attached language rows capped at 25. It does not explain why the operation is flagged destructive (destructiveHint=true) or what permissions/irreversibility are involved, 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 first, behavioral consequence second, exclusion last. No filler, and the most decision-relevant information is front-loaded.

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 full schema coverage, an output schema present, and annotations carrying the safety profile, the description only needs to supply the linkage semantics and targeting rules — which it does. Nothing material 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%, so the three parameters are already fully documented and the baseline is 3. The description restates the 25-target cap and 'all of its languages' semantics but adds no syntax or behavior the schema lacks.

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 description states a specific verb and resource ('reuse a key's translations in other projects') with a concrete example ('common button label'), and explicitly distinguishes itself from a copy that can differ per project. An agent can differentiate this from sibling tools like update_phrase or add_phrase without inspecting 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 Guidelines5/5

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

It gives an explicit trigger ('when someone asks to reuse a key's translations in other projects') and an explicit exclusion ('Not for a copy that can differ per project'). This is the when-to-use / when-not-to-use pattern done well.

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

show_project_overviewShow project overviewA
Read-onlyIdempotent
Inspect

Use this when someone wants a quick overview of one of their localization projects. Returns an overview card with the project's default locale, up to 24 configured locales and timestamps. Not for translation completeness.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdOrNameYesProject id or name

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the capped 24-locale limit and the inclusion of timestamps, which tell the agent what the card will and won't contain.

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, trigger first, return shape second, exclusion last. No filler and nothing repeated from the name or 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?

A read-only single-param lookup with an output schema and full annotation coverage needs little else. The description supplies the trigger and the one behavioral quirk (24-locale cap), which is sufficient for correct invocation.

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% for the single projectIdOrName parameter, so the schema already carries its semantics. The description adds no format, lookup, or ambiguity guidance (e.g. id vs. name precedence), 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 (show), resource (project overview), and the shape of what comes back (an overview card with default locale, configured locales, timestamps). It also carves out a boundary against the translation-completeness siblings, though it does not name get_project or find_missing_translations directly.

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 a clear trigger (someone wants a quick overview of one of their localization projects) and an explicit exclusion (not for translation completeness). It stops short of naming the alternative tool an agent should use for completeness queries.

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

update_phraseEdit a translationA
DestructiveIdempotent
Inspect

Use this when someone asks to fix or change the text of one key in one language. Returns the previous and new text and the projects sharing that string; the change applies in all of them and marks the text as human-edited. Not for adding a new key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesExact existing key
valueYesNew text for that language, 1 to 2,000 characters
projectYesProject name; an id matches nothing
languageYesLocale code of the translation to change, such as en or it

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
valueYes
statusYes
projectYes
languageYes
previousValueYes
sharedProjectsYesEvery project using this string; the change applies to all of them

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare the mutation profile; the description adds non-obvious behavior: the change propagates to every project sharing the string, marks the text human-edited, and returns previous plus new values. The cross-project propagation is exactly the kind of blast-radius detail annotations cannot convey.

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: trigger, effects/return, exclusion. Front-loaded with the use case and free of repetition of schema or annotation content.

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?

Despite an output schema already existing, the description goes further by naming what is returned and the shared-project side effect. Prerequisites and scope are fully covered for a four-parameter mutation 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 coverage is 100% and each parameter is documented in-schema (exact existing key, locale code, new text length bound), so the description carries no additional parameter detail. Baseline 3 applies when the schema does all the work.

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 ('fix or change the text of one key in one language') and immediately scopes it against the sibling add_phrase with 'Not for adding a new key.' An agent can distinguish this from add_phrase/delete_phrase without opening a 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?

Gives a clear triggering situation ('when someone asks to fix or change the text') and an explicit exclusion ('Not for adding a new key'). It stops short of naming add_phrase as the alternative tool by name, but the when/when-not framing is unambiguous.

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

update_projectChange project languages or contextA
DestructiveIdempotent
Inspect

Use this when someone asks to change a project's default locale, replace its list of languages, or set its translation context. Returns which fields changed. The language list is replaced as a whole, no strings are translated or deleted, and the project name stays fixed. Not for adding a language with its translations.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoTranslation context for the whole project, up to 600 characters; an empty string clears it
localesNoComplete replacement list of locale codes, including the default locale
defaultLocaleNoNew default locale code; it has to be one of the project's locales
projectIdOrNameYesProject id or name

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
projectYes
changedFieldsYes

TDQS

A4.5/5.0
Behavior4/5

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

With destructiveHint=true and idempotentHint=true already declared, the description usefully bounds what 'destructive' means here: the locale list is replaced wholesale, no strings are translated or deleted, and the name is immutable. It also states the return shape ('which fields changed'). It stops short of mentioning permission or auth requirements, so it is very good but not exhaustive.

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 sentences, front-loaded with the usage trigger, then the behavioral constraints, then the exclusion. Every sentence carries distinct information with no repetition of the title or 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?

Output schema covers the return value, annotations cover safety and idempotency, and the schema fully documents all four parameters. The only thing an agent additionally needs — when not to call it — is explicitly provided.

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 each parameter is well documented there (including the 'one of the project's locales' constraint and the empty-string-clears-context rule), so the baseline of 3 applies. The description reinforces replacement semantics but adds no syntax or format detail beyond the schema.

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?

Names the concrete operations: change default locale, replace the language list, set translation context. The verb 'change/update' plus a clearly scoped resource distinguishes it from siblings like add_locale and update_phrase without needing 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 Guidelines5/5

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

Opens with an explicit trigger ('Use this when someone asks to...') and closes with a hard exclusion ('Not for adding a language with its translations'), implicitly routing that case to add_locale. Both when-to-use and when-not-to-use are stated.

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. 17 tool updates
    • Changedadd_locale4 fields changed
      • changedInput schema / properties / context / description
        Previous value: -"Optional context applied while translating the missing phrases."New value: +"Note applied to every translation in this run, up to 600 characters"
      • changedInput schema / properties / locale / description
        Previous value: -"New locale code to add (for example, it)"New value: +"Locale code to add, such as it or pt-BR"
      • changedInput schema / properties / model / description
        Previous value: -"Translation model to use. Defaults to gpt-6-luna."New value: +"Translation model id; defaults to gpt-6-luna"
      • changedInput schema / properties / project / description
        Previous value: -"Project name (slug) to localize"New value: +"Project id or name"
    • Changedadd_phrase5 fields changed
      • changedInput schema / properties / context / description
        Previous value: -"Optional context that helps translators disambiguate the phrase."New value: +"Note for the translator that disambiguates the string, up to 600 characters"
      • changedInput schema / properties / key / description
        Previous value: -"New exact phrase key"New value: +"New key, 1 to 256 characters"
      • changedInput schema / properties / model / description
        Previous value: -"Translation model to use. Defaults to gpt-6-luna."New value: +"Translation model id; defaults to gpt-6-luna"
      • changedInput schema / properties / project / description
        Previous value: -"Project name (slug) to add the key to"New value: +"Project id or name"
      • changedInput schema / properties / value / description
        Previous value: -"Source value in the default locale. Omit to use the key itself."New value: +"Source text in the default locale, up to 2,000 characters; defaults to the key itself"
    • Changedadd_project3 fields changed
      • changedInput schema / properties / defaultLocale / description
        Previous value: -"Default locale code for the project (for example, en)"New value: +"Locale code of the source language, such as en"
      • changedInput schema / properties / locales / description
        Previous value: -"Initial locale codes. The default locale is added automatically when omitted."New value: +"Other locale codes to start with, such as it or de; the default locale is added automatically"
      • changedInput schema / properties / name / description
        Previous value: -"New project name (prefer a URL-safe slug)"New value: +"Name of the new project, 1 to 128 characters; a URL-safe slug such as my-app is easiest to reference later"
    • Changeddelete_phrase3 fields changed
      • changedInput schema / properties / key / description
        Previous value: -"Exact key whose complete locale group should be deleted"New value: +"Exact key to delete in every language"
      • changedInput schema / properties / project / description
        Previous value: -"Project id or name that contains the key to delete"New value: +"Project id or name that has the key"
      • addedOutput schema / properties / sharedProjects / description
        Added value: +"Other projects the deleted string was also removed from"
    • Changedexport_locale_dictionary6 fields changed
      • changedInput schema / properties / language / description
        Previous value: -"Language code to export (for example, en)"New value: +"Locale code to export, such as en"
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of keys to return. Defaults to 25, capped at 50."New value: +"Entries to return, from 1 to 50; defaults to 25"
      • changedInput schema / properties / project / description
        Previous value: -"Project name (slug) to export"New value: +"Project name; an id matches nothing"
      • changedInput schema / properties / skip / description
        Previous value: -"Number of keys to skip, sorted alphabetically. Defaults to 0 and is capped at 10000."New value: +"Keys to skip in alphabetical order, for paging: pass the previous nextSkip; defaults to 0, at most 10000"
      • addedOutput schema / properties / entries / description
        Added value: +"Key and value pairs sorted by key, values cut to 500 characters"
      • addedOutput schema / properties / nextSkip / description
        Added value: +"Pass as skip to get the next page; null on the last page"
    • Changedfind_duplicate_phrase_values3 fields changed
      • changedInput schema / properties / project / description
        Previous value: -"Project id or name whose default-locale copy should be checked"New value: +"Project id or name"
      • changedInput schema / properties / scanLimit / description
        Previous value: -"Maximum default-locale phrases to scan. Defaults to 1000, capped at 2000."New value: +"Default-locale strings to scan, from 1 to 2000; defaults to 1000"
      • addedOutput schema / properties / duplicates / description
        Added value: +"Up to 25 default-locale values used by more than one key, with up to 10 keys each and the other projects sharing them"
    • Changedfind_missing_translations5 fields changed
      • changedInput schema / properties / language / description
        Previous value: -"Locale code to check. Omit to report coverage for every configured locale."New value: +"One locale code to check; omit to check the configured locales"
      • changedInput schema / properties / localeLimit / description
        Previous value: -"Maximum configured locales to check when language is omitted. Defaults to 10."New value: +"How many configured locales to check when language is omitted, from 1 to 10; defaults to 10"
      • changedInput schema / properties / project / description
        Previous value: -"Project id or name whose translation coverage should be checked"New value: +"Project id or name"
      • changedInput schema / properties / scanLimit / description
        Previous value: -"Maximum phrases to scan per locale. Defaults to 1000, capped at 2000."New value: +"Strings to scan per locale, from 1 to 2000; defaults to 1000"
      • addedOutput schema / properties / locales / description
        Added value: +"One row per checked locale with its completion and up to 25 missing keys; status partial means a scan cap was reached"
    • Changedget_phrase4 fields changed
      • changedInput schema / properties / key / description
        Previous value: -"Exact phrase key to look up"New value: +"Exact key, matched case-sensitively"
      • changedInput schema / properties / language / description
        Previous value: -"Language code to fetch (e.g. en, it). Omit to fetch all languages for the key."New value: +"One locale code such as en or it; every language when absent"
      • changedInput schema / properties / project / description
        Previous value: -"Project name (slug) the phrase belongs to"New value: +"Project name; an id matches nothing"
      • addedOutput schema / properties / translations / description
        Added value: +"One row per locale, up to 24, values cut to 2,000 characters; projects lists every project sharing the row"
    • Changedget_project1 field changed
      • changedInput schema / properties / projectIdOrName / description
        Previous value: -"Project id or project name (slug)"New value: +"Project id or name"
    • Changedlist_phrases4 fields changed
      • changedInput schema / properties / key / description
        Previous value: -"Filter by exact phrase key"New value: +"Only this exact key"
      • changedInput schema / properties / language / description
        Previous value: -"Filter by language code (e.g. en, it, es)"New value: +"Only strings in this locale code, such as en, it or pt-BR"
      • changedInput schema / properties / project / description
        Previous value: -"Project name (slug) to list phrases for"New value: +"Project name; an id matches nothing"
      • addedOutput schema / properties / phrases / description
        Added value: +"Up to 100 phrases, one row per key and language, values cut to 2,000 characters; phraseCount has the total"
    • Changedlist_projects1 field changed
      • addedOutput schema / properties / projects / description
        Added value: +"Up to 100 projects; projectCount has the total"
    • Changedlist_team_members1 field changed
      • addedOutput schema / properties / members / description
        Added value: +"Display name and role only. Email addresses, member ids, role ids, phone, country and signup device details are never returned."
    • Changedsearch_phrases4 fields changed
      • changedInput schema / properties / language / description
        Previous value: -"Restrict search to a specific language code (e.g. en, it)"New value: +"Only search this locale code; every language when absent"
      • changedInput schema / properties / project / description
        Previous value: -"Project name (slug) to search phrases in"New value: +"Project name; an id matches nothing"
      • changedInput schema / properties / query / description
        Previous value: -"Search text to match against phrase keys and values"New value: +"Text to find in keys or values, case-insensitive, 1 to 200 characters"
      • addedOutput schema / properties / phrases / description
        Added value: +"Up to 100 matching phrases, values cut to 2,000 characters; phraseCount has the total"
    • Changedshare_phrase3 fields changed
      • changedInput schema / properties / key / description
        Previous value: -"Exact key to share across every locale"New value: +"Exact key to share, with all of its languages"
      • changedInput schema / properties / project / description
        Previous value: -"Source project id or name that already contains the key"New value: +"Project id or name that already has the key"
      • changedInput schema / properties / targetProjects / description
        Previous value: -"One or more target project ids or names to attach to the key"New value: +"1 to 25 project ids or names to attach the key to"
    • Changedshow_project_overview1 field changed
      • changedInput schema / properties / projectIdOrName / description
        Previous value: -"MultiLocale project id or name (slug) to render"New value: +"Project id or name"
    • Changedupdate_phrase5 fields changed
      • changedInput schema / properties / key / description
        Previous value: -"Exact phrase key to update"New value: +"Exact existing key"
      • changedInput schema / properties / language / description
        Previous value: -"Language code of the translation to update (e.g. en, it, es)"New value: +"Locale code of the translation to change, such as en or it"
      • changedInput schema / properties / project / description
        Previous value: -"Project name (slug) the phrase belongs to"New value: +"Project name; an id matches nothing"
      • changedInput schema / properties / value / description
        Previous value: -"New translation value for the given language"New value: +"New text for that language, 1 to 2,000 characters"
      • addedOutput schema / properties / sharedProjects / description
        Added value: +"Every project using this string; the change applies to all of them"
    • Changedupdate_project4 fields changed
      • changedInput schema / properties / context / description
        Previous value: -"Optional translation context for the project. Use an empty string to clear it."New value: +"Translation context for the whole project, up to 600 characters; an empty string clears it"
      • changedInput schema / properties / defaultLocale / description
        Previous value: -"New default locale code. It must be one of the project locales."New value: +"New default locale code; it has to be one of the project's locales"
      • changedInput schema / properties / locales / description
        Previous value: -"Complete replacement list of locale codes. Include the default locale."New value: +"Complete replacement list of locale codes, including the default locale"
      • changedInput schema / properties / projectIdOrName / description
        Previous value: -"Project id or project name (slug)"New value: +"Project id or name"
  2. 2 tool updates
    • Changedadd_locale1 field changed
      • changedInput schema / properties / model / description
        Previous value: -"Translation model to use. Defaults to gpt-5.6-luna."New value: +"Translation model to use. Defaults to gpt-6-luna."
    • Changedadd_phrase1 field changed
      • changedInput schema / properties / model / description
        Previous value: -"Translation model to use. Defaults to gpt-5.6-luna."New value: +"Translation model to use. Defaults to gpt-6-luna."
  3. 3 tool updates
    • Changedlist_projects1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_team_members1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedshow_project_overview4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / properties / project / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "creationTime": {
        -        "anyOf": [
        -          {
        -            "maxLength": 32,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "defaultLocale": {
        -        "anyOf": [
        -          {
        -            "maxLength": 35,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "id": {
        -        "anyOf": [
        -          {
        -            "pattern": "^[0-9a-f]{24}$",
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "lastEditTime": {
        -        "$ref": "#/properties/project/anyOf/0/properties/creationTime"
        -      },
        -      "localeCount": {
        -        "minimum": 0,
        -        "type": "integer"
        -      },
        -      "locales": {
        -        "items": {
        -          "$ref": "#/properties/project/anyOf/0/properties/defaultLocale/anyOf/0"
        -        },
        -        "maxItems": 24,
        -        "type": "array"
        -      },
        -      "localesTruncated": {
        -        "type": "boolean"
        -      },
        -      "name": {
        -        "maxLength": 128,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "name",
        -      "defaultLocale",
        -      "localeCount",
        -      "localesTruncated",
        -      "locales",
        -      "creationTime",
        -      "lastEditTime"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "creationTime": {
        +        "anyOf": [
        +          {
        +            "maxLength": 32,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "defaultLocale": {
        +        "anyOf": [
        +          {
        +            "maxLength": 35,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "id": {
        +        "anyOf": [
        +          {
        +            "pattern": "^[0-9a-f]{24}$",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "lastEditTime": {
        +        "anyOf": [
        +          {
        +            "maxLength": 32,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "localeCount": {
        +        "maximum": 9007199254740991,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "locales": {
        +        "items": {
        +          "maxLength": 35,
        +          "type": "string"
        +        },
        +        "maxItems": 24,
        +        "type": "array"
        +      },
        +      "localesTruncated": {
        +        "type": "boolean"
        +      },
        +      "name": {
        +        "maxLength": 128,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "defaultLocale",
        +      "localeCount",
        +      "localesTruncated",
        +      "locales",
        +      "creationTime",
        +      "lastEditTime"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  4. 17 tool updates
    • First observedadd_locale
    • First observedadd_phrase
    • First observedadd_project
    • First observeddelete_phrase
    • First observedexport_locale_dictionary
    • First observedfind_duplicate_phrase_values
    • First observedfind_missing_translations
    • First observedget_phrase
    • First observedget_project
    • First observedlist_phrases
    • First observedlist_projects
    • First observedlist_team_members
    • First observedsearch_phrases
    • First observedshare_phrase
    • First observedshow_project_overview
    • First observedupdate_phrase
    • First observedupdate_project

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    22 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources