io.github.IsaiahDupree/storebridge-mcp
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Remote MCP connector for App Store + Google Play data via StoreBridge API. No auth required.
| Author | io.github.IsaiahDupree |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 2841 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"storebridge-mcp": {
"url": "https://storebridge-mcp.vercel.app/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (13)
search_appsread-onlySearch apps on the Apple App Store, Google Play, or both. Returns matching apps with store, title, developer, icon, price, rating, category, and url. Use store="both" to fan out to both engines and merge results. Apple limit is clamped to 50; Google supports 1-250. The price filter (free/paid) only applies to Google.
Parameters:
term(required) — string — URL-encoded search term.store(required) — string — Target store. "both" fans out to both engines and merges results.lang— string — Language (Apple form en_us, Google form en). Derived from country when omitted.limit— integer — Max results. Apple is clamped to 50; Google accepts 1-250. Default 50.price— string — Price filter. Google only; Apple ignores it. Default all.device— string — Apple only. Maps to software / iPadSoftware / macSoftware. Default iphone.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.fullDetail— boolean — Google only; expensive (per-result full fetch). Default false.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_apps_batchread-onlyResolve a single Apple app by bundleId (e.g. com.burbn.instagram), or fetch many apps at once with a comma-separated ids batch (Apple up to ~200 ids in one round-trip; Google fans out and coalesces). A batch request returns an "apps" array; a bundleId request returns a single "app". Supports store="both" for batch lookups.
Parameters:
store(required) — string — Target store. "both" is supported for batch (ids) lookups.ids— string — Comma-separated app ids for a batch lookup (up to ~200).lang— string — Language. Derived from country when omitted.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.bundleId— string — Apple bundle id to resolve, e.g. com.burbn.instagram. Mutually informative with ids.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_appread-onlyFull details for one app: description, version, release dates, content rating, genres, screenshots, languages, rating (with histogram and current-version stats), version history, size, installs, IAP flag, privacy policy, and store-specific extras. {id} is the Apple trackId (numeric string, e.g. 6448311069) or the Google package name (e.g. com.whatsapp).
Parameters:
id(required) — string — Apple trackId (numeric string) or Google package name.store(required) — string — Target store.lang— string — Language. Derived from country when omitted.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_app_reviewsread-onlyReviews for one app. Apple reviews come from the customerreviews RSS feed and are hard-capped at 500 per app per country (50/page x pages 1-10); page>10 returns an error, and sort="rating" is not supported for Apple. Google reviews are token-paginated and effectively unbounded — pass the nextToken from a prior call's pagination to page forward.
Parameters:
id(required) — string — Apple trackId (numeric string) or Google package name.store(required) — string — Target store.lang— string — Language. Derived from country when omitted.page— integer — Apple only, 1-10 (RSS is fixed 50/page). Default 1.sort— string — Sort order. "rating" is unsupported for Apple. Default recent.limit— integer — Apple clamped to 50. Google ~150-200/page. Default 50.token— string — Google only. The nextToken from a prior page's pagination.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_similar_appsread-only"Customers also bought" / related apps for one app. First-class on both stores.
Parameters:
id(required) — string — Apple trackId (numeric string) or Google package name.store(required) — string — Target store.lang— string — Language. Derived from country when omitted.limit— integer — Max results. Default 20.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_app_permissionsread-onlyGoogle Play declared device/data permissions for one app, grouped by permission group. Google only — passing store="apple" returns a not_supported error.
Parameters:
id(required) — string — Google package name.lang— string — Language.store— string — Must be google. Default google.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_app_datasafetyread-onlyGoogle Play "Data safety" section for one app: data shared, data collected, security practices, and privacy policy URL. Google only — passing store="apple" returns a not_supported error.
Parameters:
id(required) — string — Google package name.lang— string — Language.store— string — Must be google. Default google.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_chartsread-onlyRanked top-chart entries (App summary plus rank) for a store. type is free/paid/grossing (Apple also supports new/newfree/newpaid). category is an Apple genre id (e.g. 6007) or a Google category constant (e.g. PRODUCTIVITY); omit for the overall chart. Google list() may return an empty array with meta.stale=true when a region is broken.
Parameters:
store(required) — string — Target store.type— string — Chart type: free, paid, grossing (Apple also: new, newfree, newpaid). Default free.limit— integer — Apple practical max ~200; Google up to ~660 (usually <=500). Default 50.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.category— string — Apple genre id (e.g. 6007) or Google category constant (e.g. PRODUCTIVITY). Omit for overall chart.fullDetail— boolean — Google only; expensive. Default false.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_categoriesread-onlyList categories for a store. Apple returns its static 6000/7000-range genre map; Google returns its categories() constants.
Parameters:
store(required) — string — Target store.lang— string — Language.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_developerread-onlyA developer record plus their published apps. {id} is the Apple artistId (numeric) or the Google developerId string (e.g. "Google LLC").
Parameters:
id(required) — string — Apple artistId (numeric) or Google developerId string.store(required) — string — Target store.lang— string — Language. Derived from country when omitted.limit— integer — Max apps returned. Default 60.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.fullDetail— boolean — Google only; expensive. Default false.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
autocomplete_suggestread-onlyUp to 5 autocomplete completions for a partial search query. First-class on both stores.
Parameters:
term(required) — string — Partial query.store(required) — string — Target store.lang— string — Language. Derived from country when omitted.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_aso_keywordsread-onlyDirectional keyword ideas for a seed term, each with a difficulty score/label, traffic score, result count, and top competitors — derived from live search/suggest results, not panel data. Every result is labeled estimated:true.
Parameters:
term(required) — string — Seed keyword.store(required) — string — Target store.lang— string — Language. Derived from country when omitted.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
get_aso_rankread-onlyPoint-in-time rank of one app across up to 20 keywords (one live search per keyword, fan-out capped at 20). Every result is labeled estimated:true. This is a snapshot, not rank tracking over time.
Parameters:
appId(required) — string — Target app id (Apple trackId or Google package name).keywords(required) — string — Comma-separated keywords, max 20.store(required) — string — Target store.lang— string — Language. Derived from country when omitted.country— string — ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.
Hints: read-only yes · destructive no · idempotent yes · 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.