storebridge-mcp

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

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
100%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,998Tokens (tool definitions)
~1.7 KBTypical response size
Significant attention impact (2.34% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "storebridge-mcp": {
      "url": "https://storebridge-mcp.vercel.app/mcp"
    }
  }
}

Remote endpoints

https://storebridge-mcp.vercel.app/mcpstreamable-http

What it can do

Tool inventory

Tools (13)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_apps(term, store, country, lang, limit, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "description": "URL-encoded search term."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google",
        "both"
      ],
      "description": "Target store. \"both\" fans out to both engines and merges results."
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language (Apple form en_us, Google form en). Derived from country when omitted.",
      "type": "string"
    },
    "limit": {
      "description": "Max results. Apple is clamped to 50; Google accepts 1-250. Default 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    },
    "price": {
      "description": "Price filter. Google only; Apple ignores it. Default all.",
      "type": "string",
      "enum": [
        "all",
        "free",
        "paid"
      ]
    },
    "device": {
      "description": "Apple only. Maps to software / iPadSoftware / macSoftware. Default iphone.",
      "type": "string",
      "enum": [
        "iphone",
        "ipad",
        "mac"
      ]
    },
    "fullDetail": {
      "description": "Google only; expensive (per-result full fetch). Default false.",
      "type": "boolean"
    }
  },
  "required": [
    "term",
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_apps_batch(store, bundleId, ids, country, lang)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google",
        "both"
      ],
      "description": "Target store. \"both\" is supported for batch (ids) lookups."
    },
    "bundleId": {
      "description": "Apple bundle id to resolve, e.g. com.burbn.instagram. Mutually informative with ids.",
      "type": "string"
    },
    "ids": {
      "description": "Comma-separated app ids for a batch lookup (up to ~200).",
      "type": "string"
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language. Derived from country when omitted.",
      "type": "string"
    }
  },
  "required": [
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_app(id, store, country, lang)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Apple trackId (numeric string) or Google package name."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language. Derived from country when omitted.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_app_reviews(id, store, country, lang, sort, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Apple trackId (numeric string) or Google package name."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language. Derived from country when omitted.",
      "type": "string"
    },
    "sort": {
      "description": "Sort order. \"rating\" is unsupported for Apple. Default recent.",
      "type": "string",
      "enum": [
        "recent",
        "helpful",
        "rating"
      ]
    },
    "page": {
      "description": "Apple only, 1-10 (RSS is fixed 50/page). Default 1.",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "token": {
      "description": "Google only. The nextToken from a prior page's pagination.",
      "type": "string"
    },
    "limit": {
      "description": "Apple clamped to 50. Google ~150-200/page. Default 50.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "id",
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_similar_apps(id, store, country, lang, limit)

"Customers also bought" / related apps for one app. First-class on both stores.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Apple trackId (numeric string) or Google package name."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language. Derived from country when omitted.",
      "type": "string"
    },
    "limit": {
      "description": "Max results. Default 20.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "id",
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_app_permissions(id, store, lang)

Google Play declared device/data permissions for one app, grouped by permission group. Google only — passing store="apple" returns a not_supported error.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Google package name."
    },
    "store": {
      "description": "Must be google. Default google.",
      "type": "string",
      "enum": [
        "google"
      ]
    },
    "lang": {
      "description": "Language.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_app_datasafety(id, store, lang)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Google package name."
    },
    "store": {
      "description": "Must be google. Default google.",
      "type": "string",
      "enum": [
        "google"
      ]
    },
    "lang": {
      "description": "Language.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_charts(store, type, category, country, limit, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "type": {
      "description": "Chart type: free, paid, grossing (Apple also: new, newfree, newpaid). Default free.",
      "type": "string"
    },
    "category": {
      "description": "Apple genre id (e.g. 6007) or Google category constant (e.g. PRODUCTIVITY). Omit for overall chart.",
      "type": "string"
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "limit": {
      "description": "Apple practical max ~200; Google up to ~660 (usually <=500). Default 50.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "fullDetail": {
      "description": "Google only; expensive. Default false.",
      "type": "boolean"
    }
  },
  "required": [
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_categories(store, lang)

List categories for a store. Apple returns its static 6000/7000-range genre map; Google returns its categories() constants.

Input Schema

{
  "type": "object",
  "properties": {
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "lang": {
      "description": "Language.",
      "type": "string"
    }
  },
  "required": [
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_developer(id, store, country, lang, limit, ...)

A developer record plus their published apps. {id} is the Apple artistId (numeric) or the Google developerId string (e.g. "Google LLC").

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Apple artistId (numeric) or Google developerId string."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language. Derived from country when omitted.",
      "type": "string"
    },
    "limit": {
      "description": "Max apps returned. Default 60.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "fullDetail": {
      "description": "Google only; expensive. Default false.",
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢autocomplete_suggest(term, store, country, lang)

Up to 5 autocomplete completions for a partial search query. First-class on both stores.

Input Schema

{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "description": "Partial query."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language. Derived from country when omitted.",
      "type": "string"
    }
  },
  "required": [
    "term",
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_aso_keywords(term, store, country, lang)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "description": "Seed keyword."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language. Derived from country when omitted.",
      "type": "string"
    }
  },
  "required": [
    "term",
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_aso_rank(appId, keywords, store, country, lang)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "appId": {
      "type": "string",
      "description": "Target app id (Apple trackId or Google package name)."
    },
    "keywords": {
      "type": "string",
      "description": "Comma-separated keywords, max 20."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "Target store."
    },
    "country": {
      "description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us.",
      "type": "string"
    },
    "lang": {
      "description": "Language. Derived from country when omitted.",
      "type": "string"
    }
  },
  "required": [
    "appId",
    "keywords",
    "store"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded13 tools
verifiedversion not recorded13 tools