ShipASO
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Audit any App Store or Google Play listing: measured ranks, keyword gaps, draft copy. Read-only.
| Author | io.github.airowe |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 254 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"ShipASO": {
"url": "https://api.shipaso.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (12)
preview_appread-onlyRead-only ASO snapshot of any App Store app (grade, lead rank, top-10 count, sample). No account or store push — the optimized copy + push commands stay behind the human-approved loop. Works without a key.
Parameters:
query— string — App name, App Store URL, numeric id, or bundle idcountry— string — ISO country storefront, e.g. USbundleId— string — Exact bundle id (skips resolution)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
audit_appread-onlyRead-only listing audit: prioritized findings (severity + impact) plus a summary, derived from the live public listing. Read-only — never edits or pushes.
Parameters:
query— string — App name, App Store URL, numeric id, or bundle idcountry— string — ISO country storefront, e.g. USbundleId— string — Exact bundle id (skips resolution)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
audit_play_appread-onlyRead-only GOOGLE PLAY listing audit: screenshot grade, the 30/80/4000 title/short/long-description budget, target-term coverage in the long description (Play's keyword surface), a keyword-stuffing guard, prioritized findings + summary, and capability locks for surfaces a public read can't see. Takes a Play package id (com.foo.bar) or a play.google.com URL — NOT a free-text name (Play has no public name search). Play has NO keyword field. Reads public Play data only; never edits or pushes.
Parameters:
brand— string — App brand name, so brand-burn in the short description is flaggedquery— string — Google Play package id (com.foo.bar) or a play.google.com app URLcountry— string — ISO country storefront, e.g. UStargets— array — Target search terms to measure long-description coverage forpackageName— string — Exact Play package id (skips resolution)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
audit_play_app_ownerread-onlyRead-only audit of YOUR OWN Google Play app via the official Play Developer API — full fidelity including the short description (which the public page can't show), with NO capability locks. Requires a configured Play service account (GOOGLE_PLAY_SERVICE_ACCOUNT). Reads only — it opens and DISCARDS a Play 'edit' and NEVER commits, so it can't publish. Owner-only; for a competitor use audit_play_app.
Parameters:
packageName(required) — string — Your app's Play package id, e.g. com.foo.barbrand— string — App brand name, so short-description brand-burn is flaggedtargets— array — Target search terms to measure long-description coverage forlanguage— string — BCP-47 listing language, e.g. en-US
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
keyword_gapsread-onlyRead-only keyword opportunities: terms tracked competitors VISIBLY use that this app doesn't target and doesn't rank top-50 for, sorted by winnability. Inferred from competitor name/subtitle only — never their ranking algorithm.
Parameters:
query— string — App name, App Store URL, numeric id, or bundle idcountry— string — ISO country storefront, e.g. USbundleId— string — Exact bundle id (skips resolution)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
rank_checkread-onlyRead-only organic rank check across the app's target keywords, plus winnability-ranked opportunities computed from those measured positions. Positions are live-measured, never fabricated.
Parameters:
query— string — App name, App Store URL, numeric id, or bundle idcountry— string — ISO country storefront, e.g. USbundleId— string — Exact bundle id (skips resolution)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
screenshot_coverageread-onlyRead-only screenshot scoring for the app's live store gallery (count, score, grade, levers to improve). Read-only — never uploads or pushes assets.
Parameters:
query— string — App name, App Store URL, numeric id, or bundle idcountry— string — ISO country storefront, e.g. USbundleId— string — Exact bundle id (skips resolution)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
competitor_watchread-onlyRead-only competitor diff: resolves the named competitors and reports their current listings, what changed vs. the last seen state, and a digest line. Read-only metadata comparison; no ranking-algorithm data is invented.
Parameters:
competitors(required) — array — Competitor app names or bundle ids to compare againstquery— string — App name, App Store URL, numeric id, or bundle idcountry— string — ISO country storefront, e.g. USbundleId— string — Exact bundle id (skips resolution)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
war_roomread-onlyRead-only head-to-head rank war room for one of YOUR connected apps: your tracked-keyword rank history vs. live competitor positions on those same keywords. Reads stored data + live competitor ranks; writes nothing.
Parameters:
appId(required) — string — Id of a connected app you owncompetitors— array — Competitor names to compare (max 4)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
localization_gapsread-onlyRead-only localization expansion recommendations (ROI-sorted locales to add) for one of YOUR connected apps, from its most recent App Store Connect run. A static, bundled heuristic over the locales already read — no live install data is fabricated. Empty until you've run an ASC-connected pass.
Parameters:
appId(required) — string — Id of a connected app you own
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
proofread-onlyRead-only, anonymized aggregate proof across all tracked apps (real rank-win numbers — no app names, no user data). This is the 'prove the rank moved' surface that closes the prepare → approve → push → prove loop. Works without a key.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
propose_copyread-onlyReturns a DRAFT optimized listing (name/subtitle/keywords/description) with validation for any app. THIS IS A DRAFT ONLY: it does NOT persist a proposal and does NOT push to the App Store. Publishing stays a human-approved action in ShipASO — an agent can draft and read; only a human approves and pushes.
Parameters:
query— string — App name, App Store URL, numeric id, or bundle idcountry— string — ISO country storefront, e.g. USbundleId— string — Exact bundle id (skips resolution)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.