Skip to main content
Glama
vom-core

storelift-mcp

localize_listing

Generate a full App Store listing for a new locale by rewriting the source listing and checking keyword metrics for that storefront. Returns screenshot captions in the same language when shots=true.

Instructions

Write the full App Store listing for a new locale — name, subtitle, keyword field and description — from the app's source listing, with every keyword measured in that storefront first. The first call starts the write and answers pending (it takes one listing write from the plan: Free 1 in total, Pro 20 and Studio 75 a month); call again with poll=true until the listing comes back. With shots=true the screenshot captions come back in the same language too. Needs get_storefront_audit to have run for the app. Writes nothing to App Store Connect; update_listing does that.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pollNoread the running write for this locale (uses nothing)
appIdYesapp id from list_apps
shotsNoalso write the screenshot captions in this language: each source screenshot's caption lines read and rewritten with the listing's keywords (shots[].source and shots[].lines, with position and style)
localeYestarget locale, e.g. de_de, pt_br, ja_jp (de-DE also works)
improveNoimprove a locale that already has its own listing, fixing the problems the storefront audit found, instead of writing a missing one

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.5.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the generic safety profile (readOnlyHint=false, non-idempotent), while the description supplies the operationally important traits: it is an async job needing polling, it consumes quota with concrete tiered limits (Free 1, Pro 20, Studio 75/month), and despite the name it 'writes nothing to App Store Connect.' That is exactly the context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with purpose, scope, sibling boundary, then the call protocol — a logical order. It is information-dense with several parenthetical asides (quota figures, screenshot field names), which is justified by the async complexity but keeps it just short of maximally tight phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema this description carries the return-value burden and does so: it says the write may return 'pending' and that the listing eventually 'comes back,' and that shots=true returns captions in the same language. Prerequisite, quota, async behavior and the write-vs-ASC boundary are all present for a 5-param mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines poll, shots, locale and improve, making 3 the baseline. The description goes beyond it by explaining the poll lifecycle (first call starts the write and answers pending) and tying improve to fixing problems found by the storefront audit, which the schema's one-line hint only gestures at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

Opens with a specific verb, resource and scope: 'Write the full App Store listing for a new locale — name, subtitle, keyword field and description.' It explicitly separates itself from both update_listing ('update_listing does that') and draft-style siblings, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

Gives the full call protocol: first call may answer 'pending', then 'call again with poll=true until the listing comes back.' It states a hard prerequisite ('Needs get_storefront_audit to have run for the app') and names the alternative behavior switch (improve=true for an existing locale rather than writing a missing one).

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