Skip to content

io.github.IsaiahDupree/storebridge-mcp

by IsaiahDupree · remote · no sign-in to list tools · v1.0.0 · published by GitHub user IsaiahDupree

Remote MCP connector for App Store + Google Play data via StoreBridge API. No auth required.

Changes · 1

13 tools: 1 change things and 12 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http storebridge https://storebridge-mcp.vercel.app/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

13 tools

Changes things 1Claude Code: ask
  • autocomplete_suggestUp to 5 autocomplete completions for a partial search query.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Up to 5 autocomplete completions for a partial search query. First-class on both stores.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 12Claude Code: allow
  • get_appFull details for one app: description, version, release dates, content rating, genres, screenshots, languages, rating (with histogram and current-version stats), version history, s…No findings

    Why it is in this group

    • The name "get_app" says "get": a word for reading.
    Description, as the server wrote it
    Full 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).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_app_datasafetyGoogle Play "Data safety" section for one app: data shared, data collected, security practices, and privacy policy URL.No findings

    Why it is in this group

    • The name "get_app_datasafety" says "get": a word for reading.
    Description, as the server wrote it
    Google 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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_app_permissionsGoogle Play declared device/data permissions for one app, grouped by permission group.No findings

    Why it is in this group

    • The name "get_app_permissions" says "get": a word for reading.
    Description, as the server wrote it
    Google Play declared device/data permissions for one app, grouped by permission group. Google only — passing store="apple" returns a not_supported error.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_app_reviewsReviews for one app.No findings

    Why it is in this group

    • The name "get_app_reviews" says "get": a word for reading.
    Description, as the server wrote it
    Reviews 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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_apps_batchResolve a single Apple app by bundleId (e.g.No findings

    Why it is in this group

    • The name "get_apps_batch" says "get": a word for reading.
    Description, as the server wrote it
    Resolve 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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_aso_keywordsDirectional 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 pane…No findings

    Why it is in this group

    • The name "get_aso_keywords" says "get": a word for reading.
    Description, as the server wrote it
    Directional 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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_aso_rankPoint-in-time rank of one app across up to 20 keywords (one live search per keyword, fan-out capped at 20).No findings

    Why it is in this group

    • The name "get_aso_rank" says "get": a word for reading.
    Description, as the server wrote it
    Point-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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_categoriesList categories for a store.No findings

    Why it is in this group

    • The name "get_categories" says "get": a word for reading.
    Description, as the server wrote it
    List categories for a store. Apple returns its static 6000/7000-range genre map; Google returns its categories() constants.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_chartsRanked top-chart entries (App summary plus rank) for a store.No findings

    Why it is in this group

    • The name "get_charts" says "get": a word for reading.
    Description, as the server wrote it
    Ranked 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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_developerA developer record plus their published apps.No findings

    Why it is in this group

    • The name "get_developer" says "get": a word for reading.
    Description, as the server wrote it
    A developer record plus their published apps. {id} is the Apple artistId (numeric) or the Google developerId string (e.g. "Google LLC").

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_similar_apps"Customers also bought" / related apps for one app.No findings

    Why it is in this group

    • The name "get_similar_apps" says "get": a word for reading.
    Description, as the server wrote it
    "Customers also bought" / related apps for one app. First-class on both stores.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_appsSearch apps on the Apple App Store, Google Play, or both.No findings

    Why it is in this group

    • The name "search_apps" says "search": a word for reading.
    Description, as the server wrote it
    Search 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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http storebridge https://storebridge-mcp.vercel.app/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__storebridge__search_apps",
      "mcp__storebridge__get_apps_batch",
      "mcp__storebridge__get_app",
      "mcp__storebridge__get_app_reviews",
      "mcp__storebridge__get_similar_apps",
      "mcp__storebridge__get_app_permissions",
      "mcp__storebridge__get_app_datasafety",
      "mcp__storebridge__get_charts",
      "mcp__storebridge__get_categories",
      "mcp__storebridge__get_developer",
      "mcp__storebridge__get_aso_keywords",
      "mcp__storebridge__get_aso_rank"
    ],
    "ask": [
      "mcp__storebridge__autocomplete_suggest"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as storebridge. Review it before you use it.