shiplocale-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SHIPLOCALE_SCOPES | No | Space-separated scopes to request — must be a subset of what the key holds | read translate |
| SHIPLOCALE_API_URL | No | Override for local development | https://api.shiplocale.com |
| SHIPLOCALE_CLIENT_ID | Yes | API key client ID (slk_...) | |
| SHIPLOCALE_CLIENT_SECRET | Yes | API key secret (sls_...) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_appsA | List all apps in the ShipLocale portfolio, with their store (AppStore/GooglePlay), bundle ID, and base language. |
| list_variantsA | List A/B listing variants for an app. Most metadata tools accept an optional variantId; omitting it targets the production variant. |
| get_app_metadata | Get all local-draft metadata localizations for an app: every field (Title, Subtitle, Keywords, Description, PromotionalText, ...) in every locale, with status (Draft/Translated/Approved/Pushed/Failed). Pass iapProductId to read one IAP's display-name rows instead. |
| list_releasesA | List an app's releases (versions) and their What's New drafting state. |
| get_release_notes | Get the What's New text of a release in every locale, with per-locale status. |
| get_target_languagesA | Get target translation locales. Three levels, each overridable: account default (no args), app level (appId), or IAP level (appId + productId). |
| get_screenshot_textsA | Get all screenshot headline/caption base texts and their translations, per slot. |
| get_character_limitsA | Get ShipLocale's hard character limits per metadata field, plus soft guidance for screenshot headlines/captions. Check these before writing copy. |
| update_app_copyA | Upsert the base-language text of one metadata field in ShipLocale's local draft. Does NOT touch the live store listing. Respect get_character_limits. Pass iapProductId to set an IAP display name. |
| update_localizationA | Edit a specific localization row (base or translated text) by its ID from get_app_metadata / get_release_notes. Set approve:true to mark it Approved — pushes only pick up Approved rows. |
| translate_fieldA | Start an async AI translation job for one metadata field into target locales. Results are cached; set force:true to re-translate unchanged copy. Counts against daily translation caps. |
| improve_copyA | Ask ShipLocale's AI to rewrite copy for a field (e.g. shorten, punch up). Returns the improved text for review — it does NOT save anything; follow up with update_app_copy to apply it. |
| create_releaseA | Create a release for a version. Optionally include sourceNotes (commit log or bullet points) that generate_release_notes will turn into polished What's New copy. |
| update_release_notes | Upsert the base-language What's New text for a release directly. |
| generate_release_notesA | Generate polished base-language What's New copy from the release's sourceNotes (commit log / bullets). Counts against monthly generation caps. |
| translate_release_notesA | Start an async job translating a release's What's New into the app's target locales. |
| update_target_languagesA | Set target translation locales at account level (no appId), app level (appId), or IAP level (appId + productId). App-level changes propagate to same-bundle-ID sibling store rows. |
| update_screenshot_textB | Set the base-language headline or caption for a screenshot slot. Guidance: headline ≤ 30 chars, caption ≤ 60 (hard cap 200). |
| update_screenshot_translationA | Manually set one locale's translation of a screenshot headline/caption. Pass an empty string to delete the override so AI can re-translate it. |
| translate_screenshot_textsC | Start an async job translating all screenshot headlines/captions into the given locales. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools map to distinct resource-action pairs: list/get/update/translate/improve/generate all have clear targets. The only mild ambiguity is between update_app_copy and update_localization, which both edit copy but at different levels (field-level upsert vs row-level localization edit); descriptions mostly resolve this.
All tools use a consistent snake_case verb_noun pattern: list_ for enumerating entities, get_ for retrieving data, update_ for edits, translate_ for translation jobs, plus create_release, generate_release_notes, and improve_copy. There are no mixed casing or naming style deviations.
17 tools is slightly above the typical 3-15 range, but the server covers a broad localization domain: apps, variants, releases, screenshots, target language config, metadata editing, and translation jobs. Each tool appears purposeful with no obvious duplicates, so the count is reasonable for the scope.
There are significant gaps: update_localization references get_app_metadata and get_release_notes, but neither tool is exposed, so agents cannot obtain row IDs for localization updates. The server also lacks a way to read generated release notes content beyond drafting state, creating dead ends in the core workflow.