Skip to main content
Glama

Simulate listing metadata

simulate_metadata

Score a listing that does not exist yet, on the same engine that audits the real ones, and see the gain or loss against the app's current score. WITH app_id: every field you leave out is read from that app's live listing AND its real context (rating, screenshots, age, languages), so { app_id, title } is a complete request and the delta is meaningful. This is the mode to use to answer "is my draft better than my listing". WITHOUT app_id: you must pass store, country and lang, and the context defaults to a listing NOBODY HAS PUBLISHED: no rating, no screenshot, one language. That deliberately floors the appeal axis, so the global score is NOT comparable to a real app's score and you must not present it as one. Compare the coverage axis instead, or pass context yourself to describe the app you have in mind. context works in both modes: any key you send overrides, any key you omit keeps the app's value (or the blank default). Returns app (null without app_id), aso_health with the three axes and the tier, delta against the app's stored score (null for a draft from scratch, and each axis is independently null when it was never computed), flags[], lost_phrases[] (with app_id: the searched phrases the live listing forms that the draft breaks, with the words it dropped and the app's rank when it tracks the phrase; the score alone does not warn about these, so always report them), the saved run, and notes[] for anything wrong with the request that did not stop it (a kw_field sent for a Google Play listing, which has none, is ignored and reported there). words_probed is how many words the run weighed; words_fetched is how many of those had to be read from the store for the first time. words_fetched: 0 means everything was already known and the call was fast; a high one is why a call took several seconds, and it warms the cache for everyone afterwards. Expect a few seconds per call. Check the draft with check_metadata first, and change something meaningful between two calls rather than polling it. Re-read a past run in full with get_metadata_simulation, or list them with list_metadata_simulations.

Input Schema

NameRequiredDescriptionDefault
langNoBCP-47 language code. Required only without app_id.
storeNoApp store. Required only without app_id: with one, the market comes from the app.
titleNoApp name
app_idNoThe application internal ID (numeric, from list_applications). Its live listing fills every field you omit, and its score is what the delta is measured against.
contextNoWhat the listing has going for it beyond its text, merged over the app's real values. Send one key alone to ask a what-if, e.g. { days_since_update: 0 } for "what if I shipped today".
countryNoISO country code. Required only without app_id.
kw_fieldNoiOS keywords field, comma separated. Google Play has no such field.
subtitleNoThe subtitle on iOS, the short description on Google Play
descriptionNoThe full/long description

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses latency ('expect a few seconds per call'), cache-warming semantics via words_fetched, non-fatal request problems surfaced in notes[], per-axis null delta semantics, and the warning that lost_phrases[] carries signal the score alone does not. Annotations (readOnlyHint=false, idempotent=false) are consistent with the saved-run behavior it describes.

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 the core action and the mode split, and nearly every sentence carries information (comparability warning, latency, cache effect). It is a single dense block, though, and the long return-value enumeration would scan better as separate sections.

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?

No output schema exists, so the description takes on the return contract itself and discharges it fully: app, aso_health axes and tier, delta null semantics, flags, lost_phrases with their caveat, the saved run, notes, and the words_probed/words_fetched meaning. Nothing an agent needs to call correctly or interpret results is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema carries the field documentation, but the description still adds real semantics: app_id inherits the live listing so { app_id, title } is complete, store/country/lang are only required without it, context keys merge over the app's real values, and kw_field is ignored on Google Play. It adds less about subtitle/description beyond what the schema says.

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

Purpose5/5

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

States a specific verb and resource ('Score a listing that does not exist yet') and immediately differentiates itself from the sibling audit engine and from check_metadata. The two-mode framing (with/without app_id) makes it unmistakable which tool this is.

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

Usage Guidelines5/5

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

Explicitly says when to use it ('is my draft better than my listing'), the required parameters per mode, the prerequisite (check_metadata first, don't poll), and names the read-back alternatives (get_metadata_simulation, list_metadata_simulations). It also states when-not: without app_id the global score is not comparable and must not be presented as one.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources