shiplocale-mcp
OfficialManage, translate, and review localized App Store/Google Play metadata as safe local drafts; with push scope it can also publish approved copy to live store listings.
Read: list apps and A/B variants; fetch metadata for all fields × locales with status; read IAP display names, releases and What's New, target languages, screenshot texts, character limits, media folders/library, and screenshot slots.
Edit local drafts: update base-language app copy, localization rows (and approve them), screenshot headlines/captions, translations, target languages, and release notes — nothing touches the live store.
AI assistance: translate fields, release notes, and screenshot texts asynchronously; generate release notes from commit logs/bullets; improve or shorten copy without saving.
Store Health (health scope): read health reports and overview, refresh checks, and suppress/clear findings.
Store push (push scope): push approved version localizations, IAP listings, Play listings/release notes, and screenshots to App Store Connect / Google Play.
Allows reading and editing localized App Store metadata, including app copy, release notes, IAP display names, screenshot texts, and optionally pushing approved copy to live App Store Connect listings.
Allows reading and editing localized Google Play metadata, including app copy, release notes, IAP display names, screenshot texts, and optionally pushing approved copy to live Google Play listings.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@shiplocale-mcplist my apps"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
shiplocale-mcp
MCP server for ShipLocale — lets Claude (or any MCP client) read and edit your localized App Store / Google Play metadata: app copy, release notes, IAP display names, screenshot texts, target languages, Store Health diagnostics, and — optionally, behind an elevated scope — push approved copy to the live store listing.
How it works
ShipLocale keeps two layers, and this server mirrors that split:
Local drafts — metadata edited and AI-translated inside ShipLocale. Safe to let an agent modify freely; nothing reaches a real store.
Store push — explicit, irreversible writes to App Store Connect / Google Play. Push tools are only registered when your key (and
SHIPLOCALE_SCOPES) includes thepushscope, so an agent with aread translatekey physically cannot ship anything.
Related MCP server: i18n-mcp
Setup
1. Mint an API key
API keys are an Indie/Pro plan feature. In the ShipLocale dashboard: Settings → API Keys → Create. Pick a label (e.g. "MCP — Claude") and scopes:
Scope | Grants |
| Read apps, metadata, releases, screenshot texts, media library, target languages |
| Edit local drafts, assign media to screenshot slots, trigger AI generation/translation |
| Read Store Health reports/overview and toggle finding suppressions |
| Write to the live App Store / Google Play listing — add only if you want the agent able to ship |
You'll get a clientId (slk_...) and a clientSecret (sls_..., shown once).
Recommended: mint a read translate health key. Add push only when you explicitly want agentic store pushes.
2. Configure your MCP client
Requires Node.js 20+. No install step needed — npx fetches the package from npm.
Environment variables:
Variable | Required | Default | Purpose |
| yes | — | API key client ID ( |
| yes | — | API key secret ( |
| no |
| Space-separated scopes to request — must be a subset of what the key holds |
| no |
| Override for local development |
Claude Code:
claude mcp add shiplocale \
-e SHIPLOCALE_CLIENT_ID=slk_xxx \
-e SHIPLOCALE_CLIENT_SECRET=sls_xxx \
-- npx -y @shiplocale/shiplocale-mcpClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"shiplocale": {
"command": "npx",
"args": ["-y", "@shiplocale/shiplocale-mcp"],
"env": {
"SHIPLOCALE_CLIENT_ID": "slk_xxx",
"SHIPLOCALE_CLIENT_SECRET": "sls_xxx"
}
}
}
}Auth is OAuth client-credentials against POST /connect/token; the server caches the 1-hour access token and re-fetches automatically on expiry or 401.
Tools
Read (read scope)
Tool | Description |
| Apps in the portfolio |
| A/B listing variants for an app |
| All draft fields × locales, with status (also IAP rows via |
| Releases and their What's New in every locale |
| Target locales at account / app / IAP level |
| Screenshot headlines/captions + translations per slot |
| Media-library folder tree with per-folder asset counts |
| Uploaded images in the media library — search, sort, page |
| Which media asset each screenshot slot holds, per device/locale |
| Per-field hard character limits |
Local drafts (translate scope — never touches the store)
Tool | Description |
| Upsert base-language text for a field (incl. IAP display names) |
| Edit any localization row; |
| Async AI translation of a field into target locales |
| AI rewrite for review — returns text, saves nothing |
| Create a release / set base What's New |
| AI-draft What's New from commit log / bullets |
| Async translation of What's New |
| Set target locales (account / app / IAP level) |
| Edit slot base text / override one translation |
| Async translation of all screenshot texts |
| Put a media asset into a slot / empty it (base slot or one locale) |
Store Health (health scope)
Tool | Description |
| Errors/warnings for an app, with suppression state per finding |
| Force an immediate re-check, bypassing the staleness TTL |
| Portfolio-wide error/warning counts (Pro plan only) |
| Ignore / un-ignore a finding workspace-wide |
Store push (push scope — irreversible, live listing)
Tool | Description |
| Find an editable store version and read live copy |
| Write metadata to App Store Connect |
| Read/write live IAP listings |
| Write a Google Play listing (title/short/full description) |
| Push What's New for one locale to a Play track |
| Push all approved screenshot renders for a variant |
Push tools require a connected store credential (credentialId from the dashboard's credential vault, except Play release notes, which resolve it server-side). Localizations generally must be Approved before a push picks them up.
Example prompts
"List my apps and show me which locales are missing a translated subtitle."
"Create release 2.4.0 from this commit log, generate the What's New, and translate it to all target languages."
"Shorten the German promotional text to fit the 170-char limit and approve it."
(with
push) "Push the approved 2.4.0 release notes to the production track."
Development
npm install
npm run build
npm run dev # tsc --watch
npm run typecheckPoint at a local backend with SHIPLOCALE_API_URL=https://localhost:7443 (or whatever the Aspire dashboard shows for the API).
Available Tools
17 toolscreate_releaseCreate a release (local draft)A
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.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID (GUID) | |
| version | Yes | Version string, e.g. "2.4.0" | |
| sourceNotes | No | Raw commit log / bullets to draft from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Create a release' without mentioning side effects, prerequisites (e.g., authentication), or what happens on duplication. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no redundant information, and front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description explains the main action and one parameter's purpose. However, it omits return value, error cases, and any prerequisites, leaving gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds value by explaining that sourceNotes is optional and intended for input to generate_release_notes, which goes beyond the schema's raw description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Create a release for a version' with a specific resource (release) and verb (create). It also mentions the optional sourceNotes, and references a sibling tool (generate_release_notes) for differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some context by linking sourceNotes to generate_release_notes, but it lacks explicit guidance on when to use this tool versus other sibling tools like translate_release_notes. No conditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_release_notesAI-draft What's New from source notesA
Generate polished base-language What's New copy from the release's sourceNotes (commit log / bullets). Counts against monthly generation caps.
| Name | Required | Description | Default |
|---|---|---|---|
| releaseId | Yes | Release ID (GUID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses generation cap and input source, but does not specify if operation is read-only or requires permissions, nor output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. Essential information front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple generation tool. Covers purpose, input, and a key constraint. Missing output details and potential side effects, but not required for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter has 100% schema coverage with description. Description adds marginal value by linking releaseId to sourceNotes, but essentially aligns with schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states verb 'generate', resource 'What's New copy', and source 'sourceNotes'. Distinguishes from sibling tools like translate_release_notes and improve_copy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides usage context via 'counts against monthly generation caps', implying limited use. Does not explicitly state when not to use or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_character_limitsGet character limitsARead-only
Get ShipLocale's hard character limits per metadata field, plus soft guidance for screenshot headlines/captions. Check these before writing copy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds specific detail about the type of data returned (hard limits and soft guidance) beyond the readOnlyHint annotation. It does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that directly state the tool's purpose and when to use it, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description clearly explains what the tool returns and in what context to use it, providing complete information for a simple read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%. The description does not need to add parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and clearly identifies the resource 'hard character limits per metadata field' plus 'soft guidance for screenshot headlines/captions'. This differentiates it from sibling tools like generate_release_notes or translate_screenshot_texts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Check these before writing copy', providing clear usage context. While it doesn't list alternatives or exclusions, the context is sufficient given the sibling tools are all different operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screenshot_textsGet screenshot textsARead-only
Get all screenshot headline/caption base texts and their translations, per slot.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID (GUID) | |
| variantId | No | Listing variant ID; omit for the production variant |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already informs the agent that this is a read-only operation. The description adds no further behavioral context beyond confirming it is retrieval. No mention of error conditions, pagination, or performance. With annotations present, the description does not need to restate the safety profile, but additional context (e.g., what happens if appId is invalid) would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently conveys the tool's purpose without extraneous words. It is front-loaded and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should explain the return format. However, it only vaguely mentions 'texts and their translations, per slot' without specifying structure (e.g., list, key-value pairs). Terms like 'slot' are undefined. This lack of output clarity makes the description incomplete for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters well-described in the schema (appId as 'App ID (GUID)' and variantId as 'Listing variant ID; omit for the production variant'). The tool description adds no additional semantic meaning beyond what the schema already provides, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get', the resource 'screenshot headline/caption base texts and their translations', and the scope 'per slot'. It effectively distinguishes this retrieval tool from sibling tools like 'translate_screenshot_texts' or 'update_screenshot_text' which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives. The usage is implied by the retrieval nature, but no 'when-not' or alternative tool references are provided. The sibling tools include translation and update operations, so the agent must infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_target_languagesGet target languagesARead-only
Get target translation locales. Three levels, each overridable: account default (no args), app level (appId), or IAP level (appId + productId).
| Name | Required | Description | Default |
|---|---|---|---|
| appId | No | App ID for app-level locales; omit for the account default | |
| productId | No | IAP product ID for the IAP-level override (requires appId) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint annotation, adding the hierarchy of overrides without contradicting. It does not mention any side effects, which is acceptable for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and efficiently cover the three-level hierarchy without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 optional params, no output schema, read-only), the description is sufficiently complete, though it could mention the return type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema ('omit for account default', 'requires appId') to the already well-described parameters, providing clear usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get target translation locales' and distinguishes three override levels (account, app, IAP), making it distinct from sibling tools like update_target_languages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each parameter combination (no args, appId, appId+productId), but does not explicitly mention when not to use this tool or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
improve_copyAI-improve copy (returns text, saves nothing)A
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.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID (GUID) | |
| action | Yes | Rewrite action, e.g. "improve", "shorten" | |
| fieldType | Yes | ||
| sourceText | Yes | The current text to rewrite |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description clearly indicates read-only behavior by stating it returns text and does not save. Could add details on authorization or limits, but sufficient for the tool's simplicity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences that cover purpose, outcome, and usage guidance without any unnecessary information. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the key aspects: purpose, input, output, and follow-up step. No output schema needed; for a simple tool, this is nearly complete. Could describe error handling or limits, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and schema already provides descriptions for all parameters. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool uses AI to rewrite copy and returns improved text for review. It distinguishes from siblings by explicitly naming the follow-up tool 'update_app_copy' to apply changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'it does NOT save anything' and instructs to follow up with 'update_app_copy' to apply the changes, providing clear when-to-use and when-not-to-use guidance with an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_appsList appsARead-only
List all apps in the ShipLocale portfolio, with their store (AppStore/GooglePlay), bundle ID, and base language.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds value by specifying the returned fields, compensating for the lack of output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action, no extraneous words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple read-only tool with no parameters. It clearly states what is returned, though pagination or ordering is not mentioned but likely unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist and schema coverage is 100%. The description adds no param info, but none is needed; baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all apps and specifies the returned fields (store, bundle ID, base language), distinguishing it from sibling tools focused on releases or translations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: when you need a list of all apps. No explicit when-not or alternatives, but sibling tool names imply different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_releasesList releasesARead-only
List an app's releases (versions) and their What's New drafting state.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID (GUID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include 'readOnlyHint: true', and the description adds context that the tool lists releases with their drafting state. It goes beyond annotations by specifying what is listed, though details like pagination or ordering are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and resource. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, the description is mostly complete. It explains what is returned (releases and drafting state). However, lacking an output schema, some detail on the return format could be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter 'appId' with a description. The tool description does not add extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'app's releases', and specifies the kind of information (versions and What's New drafting state). It distinguishes from siblings like 'create_release' and 'list_apps'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing releases but does not provide explicit when-to-use, when-not-to-use, or alternative tools. The context of sibling tools helps, but no direct guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_variantsList listing variantsARead-only
List A/B listing variants for an app. Most metadata tools accept an optional variantId; omitting it targets the production variant.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID (GUID) from list_apps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description is not required to restate that. It adds the behavioral detail about variantId targeting the production variant, which is useful beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the purpose and adding one additional contextual sentence. Every word earns its place; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter, read-only annotation, and no output schema, the description provides sufficient context about the variant listing behavior and parameter usage. It could optionally describe the return structure, but it is not necessary given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the single parameter appId with a clear description. The description adds no additional parameter semantics beyond what the schema provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List A/B listing variants for an app,' specifying the verb and resource. It distinguishes from siblings like list_apps and list_releases by focusing on variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that most metadata tools accept an optional variantId and omitting it targets the production variant, which implies when to use this tool. However, it does not explicitly state when not to use it vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_fieldAI-translate a field (async job)A
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.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID (GUID) | |
| force | No | Re-translate even if cached | |
| locales | Yes | Target locales, e.g. ["de-DE", "ja"] | |
| fieldType | Yes | ||
| variantId | No | ||
| iapProductId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses async nature, caching, re-translation with force, and daily caps. No annotations provided, so description carries full burden; does so well but could mention overwrite behavior or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose. Every phrase adds value: identifies tool type (async job), scope (one field, target locales), caching, force usage, and rate limits. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key behaviors (async, caching, caps) but omits return value description, async result polling, and guidance for selecting optional parameters (variantId vs iapProductId). Sibling differentiation is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 50% schema description coverage, the description adds minimal meaning beyond the schema. It clarifies 'force' and 'locales' but does not explain 'fieldType', 'variantId', 'iapProductId', which are critical for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts an async AI translation job for a single metadata field into target locales. It distinguishes from siblings like translate_screenshot_texts or translate_release_notes by specifying 'one metadata field'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes caching behavior, the force flag, and daily caps, which guide usage. Implicitly indicates it's for individual field translation, but lacks explicit alternative mentions or exclusion of bulk operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_release_notesAI-translate What's New (async job)A
Start an async job translating a release's What's New into the app's target locales.
| Name | Required | Description | Default |
|---|---|---|---|
| releaseId | Yes | Release ID (GUID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions 'async job' but does not disclose side effects, destructive potential, auth requirements, rate limits, or how to monitor progress. Essential behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the core action and scope without extraneous words. Every word earns its place, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one parameter, no output schema), the description covers the basic purpose. However, it lacks information on post-job behavior (e.g., status checking) and does not clarify whether there are prerequisites or constraints, making it somewhat incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter releaseId, which has a clear description 'Release ID (GUID)'. The description adds no additional semantic meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Start an async job' and the specific resource 'a release's What's New', along with scope 'into the app's target locales'. It distinguishes from siblings like translate_screenshot_texts and translate_field by specifying the content type and async nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (for batch translating What's New content), but provides no explicit guidance on alternatives, prerequisites, or when not to use. It relies on the user inferring from the specific resource mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_screenshot_textsAI-translate screenshot texts (async job)C
Start an async job translating all screenshot headlines/captions into the given locales.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID (GUID) | |
| force | No | Re-translate even if cached | |
| locales | Yes | ||
| variantId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions 'async job' but does not disclose side effects, how to check status, or error conditions. Missing details like whether existing translations are overwritten, or if there are rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded with the main action. However, it is too terse and sacrifices necessary detail for brevity. Still, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (async job, batch operation), the description is inadequate. No output schema is provided, and key aspects like result retrieval, idempotency, or impact on existing translations are omitted. The description leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (appId and force described, locales and variantId not). The description only says 'into the given locales' without specifying format or constraints. It does not explain 'force' or 'variantId' beyond the parameter name. The description fails to compensate for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it starts an async job to translate all screenshot headlines/captions to given locales. It uses a specific verb 'start an async job' and resource 'screenshot headlines/captions', distinguishing it from siblings like 'translate_field' or 'update_screenshot_text' which handle individual items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., for single screenshots use 'update_screenshot_text', for fields use 'translate_field'). The description lacks context for selecting this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_app_copyUpdate base-language copy (local draft)A
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| appId | Yes | App ID (GUID) | |
| fieldType | Yes | ||
| variantId | No | Listing variant ID; omit for the production variant | |
| iapProductId | No | IAP product ID when editing IapDisplayName |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes upsert behavior, local-only impact, and character-limit constraint. With no annotations, it covers essential safety but omits error cases, response format, and prerequisite checks beyond character limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack key information: action, scope, constraints, and a parameter hint. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior and usage, but lacks return value description. Given tool simplicity and no output schema, it is mostly adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds context for iapProductId ('set an IAP display name') and implies fieldType selects the field. With 60% schema coverage, description enhances understanding but doesn't explain all parameters in detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Upsert') and resource ('base-language text of one metadata field in ShipLocale's local draft'), clearly distinguishing it from live listing updates and sibling tools like update_localization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states local-draft-only scope and to respect character limits. Mentions iapProductId for IAP display names. Lacks direct comparison to sibling tools but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_localizationEdit one localization row (local draft)A
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| approve | No | Mark the row Approved | |
| localizationId | Yes | Localization row ID (GUID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must convey all behavioral traits. It mentions the approval workflow, but does not specify whether the update is partial or full, what happens to unprovided fields, or any side effects. This is adequate but leaves some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core functionality and a critical rule. No redundant information, perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool with no output schema, the description covers the essential aspects: what it edits, how to identify the row, and a key behavioral rule. It could be more complete by mentioning success responses or prerequisites, but it's largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds context for localizationId (source) and approve (consequence for pushes). However, the text parameter lacks additional semantics beyond being a string, and the description does not fully compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (edit), the resource (localization row), and specifies it is by ID. It also refers to the source of the ID (get_app_metadata / get_release_notes), making the purpose unambiguous and distinct from sibling tools like update_app_copy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key usage guideline: pushes only pick up Approved rows, and how to set approval via approve:true. However, it does not explicitly mention when to use this tool over alternatives or contraindications, so it's slightly below perfect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_screenshot_textSet screenshot headline/caption (local draft)B
Set the base-language headline or caption for a screenshot slot. Guidance: headline ≤ 30 chars, caption ≤ 60 (hard cap 200).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| appId | Yes | App ID (GUID) | |
| textType | Yes | ||
| slotIndex | Yes | Screenshot slot index | |
| variantId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It indicates a write operation ('Set') but omits side effects, permissions, synchronous/asynchronous behavior, and whether it overwrites existing text. This is insufficient for agents to understand impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states the action, second provides critical guidance. No unnecessary words, information is front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, no annotations, and multiple sibling tools, the description is too sparse. It does not explain the relationship between base-language and translations, what happens on success, or how variantId is used. Agents would likely need to infer or fail without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 40% (only appId and slotIndex have descriptions). The description adds character limits for headline and caption, which partially compensates. However, variantId is not explained, and textType enum values are only implied. The description adds some value but not enough for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Set the base-language headline or caption for a screenshot slot.' It uses specific verbs and nouns, and the title reinforces 'local draft'. This distinguishes it from siblings like update_screenshot_translation and get_screenshot_texts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides character limit guidance but does not indicate when to use this tool versus alternatives such as update_screenshot_translation for translations or get_screenshot_texts for reading. No explicit when/to-when-not advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_screenshot_translationOverride one screenshot text 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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Translated text; empty string deletes the override | |
| appId | Yes | App ID (GUID) | |
| locale | Yes | Locale, e.g. "de-DE" | |
| textId | Yes | Screenshot text ID from get_screenshot_texts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It discloses that setting is manual and empty string deletes the override, but does not mention permissions, side effects, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Each sentence adds value: action in first, deletion behavior in second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple mutation tool with 4 required params and no output schema. Describes main behavior and deletion, but lacks details on immediate effects or return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no new meaning beyond schema; it mentions 'headline/caption' which aligns with the 'text' parameter description but does not elaborate on other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Manually set') and the specific resource ('one locale's translation of a screenshot headline/caption'). It distinguishes from siblings like 'translate_screenshot_texts' by emphasizing manual override.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use (manual override) and how to delete an override (empty string). However, it does not explicitly mention when not to use or provide direct alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_target_languagesSet 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.
| Name | Required | Description | Default |
|---|---|---|---|
| appId | No | ||
| productId | No | IAP product ID (requires appId) | |
| targetLocales | Yes | Locales, e.g. ["de-DE", "fr-FR", "ja"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must convey behavioral traits. It discloses the scoping (account/app/IAP) and propagation of app-level changes, but does not mention whether changes are destructive (overwrite), reversible, or require specific permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. The first states the core purpose and scoping, the second adds a key behavioral detail about propagation. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 3 parameters. The description, combined with schema, provides sufficient detail for correct invocation. No output schema exists, so return values are not expected. Minor gap: no mention of whether the operation succeeds or errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (targetLocales and productId have descriptions, appId lacks one). The description adds semantic context: it explains the hierarchical usage of appId and productId, the requirement that productId needs appId, and provides an example for targetLocales format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Set target translation locales') and the resource ('target languages'), specifying three hierarchical levels (account, app, IAP). It distinguishes from sibling tools like 'get_target_languages' by describing the setting operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each level (no appId for account, appId for app, appId+productId for IAP) and notes propagation behavior. However, it does not explicitly state when NOT to use this tool or provide alternatives like 'get_target_languages' for read-only needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Every tool targets a distinct resource/action (e.g., release notes vs. screenshot translations vs. app copy). Descriptions clarify boundaries, and no two tools overlap in purpose.
All tool names follow a strict verb_noun snake_case pattern (e.g., generate_release_notes, list_apps, update_localization). No mixing of styles or irregular verbs.
17 tools is slightly above the typical ideal range (3–15), but each serves a unique function within the app store localization domain, so it remains reasonable.
Covers creation, listing, update, translation, and improvement for releases, screenshots, and copy. Minor gaps (e.g., no dedicated get_release_notes tool, no delete operations) but core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create App Store screenshots, icons, ASO copy, localization, and revisions via hosted MCP.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Deploy & release tracking with native MCP — ask Claude what's in production and cut the release.
Related MCP Servers
- AlicenseBqualityAmaintenanceUnified MCP server for App Store Connect & Google Play Console — manage listings, screenshots, releases, reviews & submissions919628MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for managing i18n JSON translation files. Provides Claude with structured read/write access to translation files for adding keys, checking coverage, and finding duplicates.351MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server that connects Cursor, Claude Desktop, and other MCP clients to the official App Store Connect API—so you can manage iOS/macOS apps, TestFlight, in-app subscriptions, and store metadata via chat or automated tool calls.6913913MIT
- AlicenseAqualityAmaintenanceAn opinionated MCP server for App Store Connect that provides 13 curated tools, slash-command workflows, and a Claude Skill to manage apps, reviews, sales, and pre-submission audits via natural language.41110MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ShipLocale/shiplocale-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server