Multilocale Translations

Manage app translations: find missing or duplicate phrases, add languages and export dictionaries.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
88%
Naming quality
99%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'find_missing_translations' description lacks action verbin find_missing_translations

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~7,795Tokens (tool definitions)
~4.0 KBTypical response size
Significant attention impact (6.09% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "multilocale": {
      "url": "https://mcp.multilocale.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.multilocale.com/mcpstreamable-http

What it can do

Tool inventory

Tools (18)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_projects

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty"
      ]
    },
    "projectCount": {
      "type": "integer",
      "minimum": 0
    },
    "projectsTruncated": {
      "type": "boolean"
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string",
            "maxLength": 128
          },
          "defaultLocale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 35
              },
              {
                "type": "null"
              }
            ]
          },
          "locales": {
            "type": "array",
            "items": {
              "$ref": "#/properties/projects/items/properties/defaultLocale/anyOf/0"
            },
            "maxItems": 200
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "$ref": "#/properties/projects/items/properties/creationTime"
          }
        },
        "required": [
          "id",
          "name",
          "defaultLocale",
          "locales",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 100,
      "description": "Up to 100 projects; projectCount has the total"
    }
  },
  "required": [
    "status",
    "projectCount",
    "projectsTruncated",
    "projects"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_project(projectIdOrName)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "projectIdOrName": {
      "type": "string",
      "maxLength": 128,
      "description": "Project id or name"
    }
  },
  "required": [
    "projectIdOrName"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[0-9a-f]{24}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "name": {
              "type": "string",
              "maxLength": 128
            },
            "defaultLocale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 35
                },
                {
                  "type": "null"
                }
              ]
            },
            "locales": {
              "type": "array",
              "items": {
                "$ref": "#/properties/project/anyOf/0/properties/defaultLocale/anyOf/0"
              },
              "maxItems": 200
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "$ref": "#/properties/project/anyOf/0/properties/creationTime"
            }
          },
          "required": [
            "id",
            "name",
            "defaultLocale",
            "locales",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "project"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴add_project(name, defaultLocale, locales)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Name of the new project, 1 to 128 characters; a URL-safe slug such as my-app is easiest to reference later"
    },
    "defaultLocale": {
      "type": "string",
      "minLength": 1,
      "maxLength": 35,
      "description": "Locale code of the source language, such as en"
    },
    "locales": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 35
      },
      "maxItems": 200,
      "description": "Other locale codes to start with, such as it or de; the default locale is added automatically"
    }
  },
  "required": [
    "name",
    "defaultLocale"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "created",
        "already-exists"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[0-9a-f]{24}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "name": {
              "type": "string",
              "maxLength": 128
            },
            "defaultLocale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 35
                },
                {
                  "type": "null"
                }
              ]
            },
            "locales": {
              "type": "array",
              "items": {
                "$ref": "#/properties/project/anyOf/0/properties/defaultLocale/anyOf/0"
              },
              "maxItems": 200
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "$ref": "#/properties/project/anyOf/0/properties/creationTime"
            }
          },
          "required": [
            "id",
            "name",
            "defaultLocale",
            "locales",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "project"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_project(projectIdOrName, defaultLocale, locales, context)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "projectIdOrName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project id or name"
    },
    "defaultLocale": {
      "type": "string",
      "minLength": 1,
      "maxLength": 35,
      "description": "New default locale code; it has to be one of the project's locales"
    },
    "locales": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 35
      },
      "minItems": 1,
      "maxItems": 200,
      "description": "Complete replacement list of locale codes, including the default locale"
    },
    "context": {
      "type": "string",
      "maxLength": 600,
      "description": "Translation context for the whole project, up to 600 characters; an empty string clears it"
    }
  },
  "required": [
    "projectIdOrName"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "no-input",
        "not-found",
        "no-change",
        "updated"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ]
    },
    "changedFields": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "defaultLocale",
          "locales",
          "context"
        ]
      },
      "maxItems": 3
    }
  },
  "required": [
    "status",
    "project",
    "changedFields"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_phrases(project, language, key)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "maxLength": 128,
      "description": "Project name; an id matches nothing"
    },
    "language": {
      "type": "string",
      "maxLength": 35,
      "description": "Only strings in this locale code, such as en, it or pt-BR"
    },
    "key": {
      "type": "string",
      "maxLength": 256,
      "description": "Only this exact key"
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty"
      ]
    },
    "phraseCount": {
      "type": "integer",
      "minimum": 0
    },
    "phrasesTruncated": {
      "type": "boolean"
    },
    "phrases": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "key": {
            "type": "string",
            "maxLength": 256
          },
          "language": {
            "type": "string",
            "maxLength": 35
          },
          "value": {
            "type": "string",
            "maxLength": 2000
          },
          "valueTruncated": {
            "type": "boolean"
          },
          "machineTranslated": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 128
            },
            "maxItems": 100
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "$ref": "#/properties/phrases/items/properties/creationTime"
          }
        },
        "required": [
          "id",
          "key",
          "language",
          "value",
          "valueTruncated",
          "machineTranslated",
          "projects",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 100,
      "description": "Up to 100 phrases, one row per key and language, values cut to 2,000 characters; phraseCount has the total"
    }
  },
  "required": [
    "status",
    "phraseCount",
    "phrasesTruncated",
    "phrases"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_phrase(project, key, language)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "maxLength": 128,
      "description": "Project name; an id matches nothing"
    },
    "key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Exact key, matched case-sensitively"
    },
    "language": {
      "type": "string",
      "maxLength": 35,
      "description": "One locale code such as en or it; every language when absent"
    }
  },
  "required": [
    "project",
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "project": {
      "type": "string",
      "maxLength": 128
    },
    "key": {
      "type": "string",
      "maxLength": 256
    },
    "translationCount": {
      "type": "integer",
      "minimum": 0
    },
    "translationsTruncated": {
      "type": "boolean"
    },
    "translations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "language": {
            "type": "string",
            "maxLength": 35
          },
          "value": {
            "type": "string",
            "maxLength": 2000
          },
          "valueTruncated": {
            "type": "boolean"
          },
          "machineTranslated": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 128
            },
            "maxItems": 100
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "$ref": "#/properties/translations/items/properties/creationTime"
          }
        },
        "required": [
          "id",
          "language",
          "value",
          "valueTruncated",
          "machineTranslated",
          "projects",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 24,
      "description": "One row per locale, up to 24, values cut to 2,000 characters; projects lists every project sharing the row"
    }
  },
  "required": [
    "status",
    "project",
    "key",
    "translationCount",
    "translationsTruncated",
    "translations"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_phrases(project, query, language)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "maxLength": 128,
      "description": "Project name; an id matches nothing"
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Text to find in keys or values, case-insensitive, 1 to 200 characters"
    },
    "language": {
      "type": "string",
      "maxLength": 35,
      "description": "Only search this locale code; every language when absent"
    }
  },
  "required": [
    "project",
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty",
        "no-matches"
      ]
    },
    "phraseCount": {
      "type": "integer",
      "minimum": 0
    },
    "phrasesTruncated": {
      "type": "boolean"
    },
    "phrases": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "key": {
            "type": "string",
            "maxLength": 256
          },
          "language": {
            "type": "string",
            "maxLength": 35
          },
          "value": {
            "type": "string",
            "maxLength": 2000
          },
          "valueTruncated": {
            "type": "boolean"
          },
          "machineTranslated": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 128
            },
            "maxItems": 100
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "$ref": "#/properties/phrases/items/properties/creationTime"
          }
        },
        "required": [
          "id",
          "key",
          "language",
          "value",
          "valueTruncated",
          "machineTranslated",
          "projects",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 100,
      "description": "Up to 100 matching phrases, values cut to 2,000 characters; phraseCount has the total"
    }
  },
  "required": [
    "status",
    "phraseCount",
    "phrasesTruncated",
    "phrases"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_duplicate_phrase_values(project, scanLimit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project id or name"
    },
    "scanLimit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2000,
      "description": "Default-locale strings to scan, from 1 to 2000; defaults to 1000"
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "none",
        "partial",
        "not-found"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ]
    },
    "defaultLocale": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 35
        },
        {
          "type": "null"
        }
      ]
    },
    "phrasesScanned": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2000
    },
    "scanLimit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2000
    },
    "scanTruncated": {
      "type": "boolean"
    },
    "duplicateCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2000
    },
    "duplicatesTruncated": {
      "type": "boolean"
    },
    "duplicates": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "maxLength": 500
          },
          "valueTruncated": {
            "type": "boolean"
          },
          "keys": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "maxItems": 10
          },
          "keysTruncated": {
            "type": "boolean"
          },
          "sharedWith": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "maxItems": 10
          },
          "sharedWithTruncated": {
            "type": "boolean"
          }
        },
        "required": [
          "value",
          "valueTruncated",
          "keys",
          "keysTruncated",
          "sharedWith",
          "sharedWithTruncated"
        ],
        "additionalProperties": false
      },
      "maxItems": 25,
      "description": "Up to 25 default-locale values used by more than one key, with up to 10 keys each and the other projects sharing them"
    }
  },
  "required": [
    "status",
    "project",
    "defaultLocale",
    "phrasesScanned",
    "scanLimit",
    "scanTruncated",
    "duplicateCount",
    "duplicatesTruncated",
    "duplicates"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_missing_translations(project, language, localeLimit, scanLimit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project id or name"
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 35,
      "description": "One locale code to check; omit to check the configured locales"
    },
    "localeLimit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10,
      "description": "How many configured locales to check when language is omitted, from 1 to 10; defaults to 10"
    },
    "scanLimit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2000,
      "description": "Strings to scan per locale, from 1 to 2000; defaults to 1000"
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "complete",
        "incomplete",
        "partial",
        "not-found"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ]
    },
    "defaultLocale": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 35
        },
        {
          "type": "null"
        }
      ]
    },
    "sourcePhrasesScanned": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2000
    },
    "scanLimit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 2000
    },
    "sourceScanTruncated": {
      "type": "boolean"
    },
    "localesTruncated": {
      "type": "boolean"
    },
    "locales": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "minLength": 1,
            "maxLength": 35
          },
          "totalKeys": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2000
          },
          "translatedKeys": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2000
          },
          "missingKeyCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2000
          },
          "completionPercent": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          },
          "targetPhrasesScanned": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2000
          },
          "targetScanTruncated": {
            "type": "boolean"
          },
          "analysisIncomplete": {
            "type": "boolean"
          },
          "missingKeys": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "maxItems": 25
          },
          "missingKeysTruncated": {
            "type": "boolean"
          }
        },
        "required": [
          "language",
          "totalKeys",
          "translatedKeys",
          "missingKeyCount",
          "completionPercent",
          "targetPhrasesScanned",
          "targetScanTruncated",
          "analysisIncomplete",
          "missingKeys",
          "missingKeysTruncated"
        ],
        "additionalProperties": false
      },
      "maxItems": 10,
      "description": "One row per checked locale with its completion and up to 25 missing keys; status partial means a scan cap was reached"
    }
  },
  "required": [
    "status",
    "project",
    "defaultLocale",
    "sourcePhrasesScanned",
    "scanLimit",
    "sourceScanTruncated",
    "localesTruncated",
    "locales"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢export_locale_dictionary(project, language, skip, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project name; an id matches nothing"
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 35,
      "description": "Locale code to export, such as en"
    },
    "skip": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000,
      "description": "Keys to skip in alphabetical order, for paging: pass the previous nextSkip; defaults to 0, at most 10000"
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50,
      "description": "Entries to return, from 1 to 50; defaults to 25"
    }
  },
  "required": [
    "project",
    "language"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty",
        "partial"
      ]
    },
    "project": {
      "type": "string",
      "maxLength": 128
    },
    "language": {
      "type": "string",
      "maxLength": 35
    },
    "returnedCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 50
    },
    "skip": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000
    },
    "nextSkip": {
      "anyOf": [
        {
          "$ref": "#/properties/skip"
        },
        {
          "type": "null"
        }
      ],
      "description": "Pass as skip to get the next page; null on the last page"
    },
    "hasMore": {
      "type": "boolean"
    },
    "offsetCapReached": {
      "type": "boolean"
    },
    "valuesTruncated": {
      "type": "boolean"
    },
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "value": {
            "type": "string",
            "maxLength": 500
          }
        },
        "required": [
          "key",
          "value"
        ],
        "additionalProperties": false
      },
      "maxItems": 50,
      "description": "Key and value pairs sorted by key, values cut to 500 characters"
    }
  },
  "required": [
    "status",
    "project",
    "language",
    "returnedCount",
    "skip",
    "nextSkip",
    "hasMore",
    "offsetCapReached",
    "valuesTruncated",
    "entries"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_team_members

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "empty"
      ]
    },
    "memberCount": {
      "type": "integer",
      "minimum": 0
    },
    "membersTruncated": {
      "type": "boolean"
    },
    "members": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "role": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          }
        },
        "required": [
          "name",
          "role"
        ],
        "additionalProperties": false
      },
      "maxItems": 100,
      "description": "Display name and role only. Email addresses, member ids, role ids, phone, country and signup device details are never returned."
    }
  },
  "required": [
    "status",
    "memberCount",
    "membersTruncated",
    "members"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴add_phrase(project, key, value, model, context)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project id or name"
    },
    "key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "New key, 1 to 256 characters"
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "Source text in the default locale, up to 2,000 characters; defaults to the key itself"
    },
    "model": {
      "type": "string",
      "maxLength": 64,
      "description": "Translation model id; defaults to gpt-6-luna"
    },
    "context": {
      "type": "string",
      "maxLength": 600,
      "description": "Note for the translator that disambiguates the string, up to 600 characters"
    }
  },
  "required": [
    "project",
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "created",
        "not-found",
        "already-exists"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ]
    },
    "key": {
      "type": "string",
      "maxLength": 256
    },
    "defaultLocale": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 35
        },
        {
          "type": "null"
        }
      ]
    },
    "translationCount": {
      "type": "integer",
      "minimum": 0
    },
    "locales": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 35
      },
      "maxItems": 200
    }
  },
  "required": [
    "status",
    "project",
    "key",
    "defaultLocale",
    "translationCount",
    "locales"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_phrase(project, key, language, value)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "maxLength": 128,
      "description": "Project name; an id matches nothing"
    },
    "key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Exact existing key"
    },
    "language": {
      "type": "string",
      "minLength": 1,
      "maxLength": 35,
      "description": "Locale code of the translation to change, such as en or it"
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "New text for that language, 1 to 2,000 characters"
    }
  },
  "required": [
    "project",
    "key",
    "language",
    "value"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "not-found",
        "no-change",
        "updated"
      ]
    },
    "project": {
      "type": "string",
      "maxLength": 128
    },
    "key": {
      "type": "string",
      "maxLength": 256
    },
    "language": {
      "type": "string",
      "maxLength": 35
    },
    "previousValue": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000
        },
        {
          "type": "null"
        }
      ]
    },
    "value": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000
        },
        {
          "type": "null"
        }
      ]
    },
    "sharedProjects": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 128
      },
      "maxItems": 100,
      "description": "Every project using this string; the change applies to all of them"
    }
  },
  "required": [
    "status",
    "project",
    "key",
    "language",
    "previousValue",
    "value",
    "sharedProjects"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴add_locale(project, locale, model, context)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project id or name"
    },
    "locale": {
      "type": "string",
      "minLength": 1,
      "maxLength": 35,
      "description": "Locale code to add, such as it or pt-BR"
    },
    "model": {
      "type": "string",
      "maxLength": 64,
      "description": "Translation model id; defaults to gpt-6-luna"
    },
    "context": {
      "type": "string",
      "maxLength": 600,
      "description": "Note applied to every translation in this run, up to 600 characters"
    }
  },
  "required": [
    "project",
    "locale"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "created",
        "not-found",
        "already-exists"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ]
    },
    "locale": {
      "type": "string",
      "maxLength": 35
    },
    "translationCount": {
      "type": "integer",
      "minimum": 0
    },
    "locales": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 35
      },
      "maxItems": 200
    }
  },
  "required": [
    "status",
    "project",
    "locale",
    "translationCount",
    "locales"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴share_phrase(project, key, targetProjects)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project id or name that already has the key"
    },
    "key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Exact key to share, with all of its languages"
    },
    "targetProjects": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      },
      "minItems": 1,
      "maxItems": 25,
      "description": "1 to 25 project ids or names to attach the key to"
    }
  },
  "required": [
    "project",
    "key",
    "targetProjects"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "updated",
        "not-found",
        "no-targets",
        "already-shared"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ]
    },
    "key": {
      "type": "string",
      "maxLength": 256
    },
    "targetProjects": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 128
      },
      "maxItems": 25
    },
    "translationCount": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "status",
    "project",
    "key",
    "targetProjects",
    "translationCount"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_phrase(project, key)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project id or name that has the key"
    },
    "key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "description": "Exact key to delete in every language"
    }
  },
  "required": [
    "project",
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "deleted",
        "not-found"
      ]
    },
    "project": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ]
    },
    "key": {
      "type": "string",
      "maxLength": 256
    },
    "deletedTranslationCount": {
      "type": "integer",
      "minimum": 0
    },
    "sharedProjects": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 128
      },
      "maxItems": 100,
      "description": "Other projects the deleted string was also removed from"
    }
  },
  "required": [
    "status",
    "project",
    "key",
    "deletedTranslationCount",
    "sharedProjects"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢open_multilocale

Use this when someone wants to open Multilocale and browse their workspace interactively. Localization projects, strings and translations. Starts with up to 100 items. Not for changing data.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "items": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string",
            "maxLength": 200
          },
          "subtitle": {
            "type": "string",
            "maxLength": 300
          },
          "logoUrl": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2048
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultLocale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "locales": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 32
            }
          }
        },
        "required": [
          "id",
          "name",
          "subtitle",
          "logoUrl",
          "defaultLocale",
          "locales"
        ],
        "additionalProperties": false
      }
    },
    "truncated": {
      "type": "boolean"
    }
  },
  "required": [
    "items",
    "truncated"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢show_project_overview(projectIdOrName)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "projectIdOrName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Project id or name"
    }
  },
  "required": [
    "projectIdOrName"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "project": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[0-9a-f]{24}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "name": {
              "type": "string",
              "maxLength": 128
            },
            "defaultLocale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 35
                },
                {
                  "type": "null"
                }
              ]
            },
            "localeCount": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "localesTruncated": {
              "type": "boolean"
            },
            "locales": {
              "maxItems": 24,
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 35
              }
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "name",
            "defaultLocale",
            "localeCount",
            "localesTruncated",
            "locales",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "project"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded18 tools
verifiedversion not recorded18 tools
verifiedversion not recorded18 tools
verifiedversion not recorded18 tools
verifiedversion not recorded17 tools
verifiedversion not recorded17 tools