StoreBridge MCP
A remote MCP connector that exposes StoreBridge API endpoints as discoverable, typed MCP tools for LLM agents. It allows agents to query public app store metadata including search, app details, reviews, similar apps, charts, categories, developer portfolios, autocomplete, and ASO keyword/rank data without requiring authentication.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://storebridge-mcp.vercel.app/mcpWhat its tools do
13 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for apps on App Store and Google Play
- Retrieve detailed app information and reviews
- Fetch app charts and category rankings
- Analyze developer portfolios and ASO keywords
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- storebridge 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 13 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
13 advertised
search_apps — Search apps
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"term",
"store"
],
"properties": {
"lang": {
"type": "string",
"description": "Language (Apple form en_us, Google form en). Derived from country when omitted."
},
"term": {
"type": "string",
"description": "URL-encoded search term."
},
"limit": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Max results. Apple is clamped to 50; Google accepts 1-250. Default 50."
},
"price": {
"enum": [
"all",
"free",
"paid"
],
"type": "string",
"description": "Price filter. Google only; Apple ignores it. Default all."
},
"store": {
"enum": [
"apple",
"google",
"both"
],
"type": "string",
"description": "Target store. \"both\" fans out to both engines and merges results."
},
"device": {
"enum": [
"iphone",
"ipad",
"mac"
],
"type": "string",
"description": "Apple only. Maps to software / iPadSoftware / macSoftware. Default iphone."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
},
"fullDetail": {
"type": "boolean",
"description": "Google only; expensive (per-result full fetch). Default false."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_apps_batch — Look up apps by bundle id or batch of ids
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"store"
],
"properties": {
"ids": {
"type": "string",
"description": "Comma-separated app ids for a batch lookup (up to ~200)."
},
"lang": {
"type": "string",
"description": "Language. Derived from country when omitted."
},
"store": {
"enum": [
"apple",
"google",
"both"
],
"type": "string",
"description": "Target store. \"both\" is supported for batch (ids) lookups."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
},
"bundleId": {
"type": "string",
"description": "Apple bundle id to resolve, e.g. com.burbn.instagram. Mutually informative with ids."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_app — Get app details
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).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"store"
],
"properties": {
"id": {
"type": "string",
"description": "Apple trackId (numeric string) or Google package name."
},
"lang": {
"type": "string",
"description": "Language. Derived from country when omitted."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_app_reviews — Get app reviews
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"store"
],
"properties": {
"id": {
"type": "string",
"description": "Apple trackId (numeric string) or Google package name."
},
"lang": {
"type": "string",
"description": "Language. Derived from country when omitted."
},
"page": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Apple only, 1-10 (RSS is fixed 50/page). Default 1."
},
"sort": {
"enum": [
"recent",
"helpful",
"rating"
],
"type": "string",
"description": "Sort order. \"rating\" is unsupported for Apple. Default recent."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Apple clamped to 50. Google ~150-200/page. Default 50."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
},
"token": {
"type": "string",
"description": "Google only. The nextToken from a prior page's pagination."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_similar_apps — Get similar apps
"Customers also bought" / related apps for one app. First-class on both stores.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"store"
],
"properties": {
"id": {
"type": "string",
"description": "Apple trackId (numeric string) or Google package name."
},
"lang": {
"type": "string",
"description": "Language. Derived from country when omitted."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max results. Default 20."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_app_permissions — Get app permissions (Google only)
Google Play declared device/data permissions for one app, grouped by permission group. Google only — passing store="apple" returns a not_supported error.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Google package name."
},
"lang": {
"type": "string",
"description": "Language."
},
"store": {
"enum": [
"google"
],
"type": "string",
"description": "Must be google. Default google."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_app_datasafety — Get app data safety (Google only)
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Google package name."
},
"lang": {
"type": "string",
"description": "Language."
},
"store": {
"enum": [
"google"
],
"type": "string",
"description": "Must be google. Default google."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_charts — Get top charts
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"store"
],
"properties": {
"type": {
"type": "string",
"description": "Chart type: free, paid, grossing (Apple also: new, newfree, newpaid). Default free."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Apple practical max ~200; Google up to ~660 (usually <=500). Default 50."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
},
"category": {
"type": "string",
"description": "Apple genre id (e.g. 6007) or Google category constant (e.g. PRODUCTIVITY). Omit for overall chart."
},
"fullDetail": {
"type": "boolean",
"description": "Google only; expensive. Default false."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_categories — Get categories / genres
List categories for a store. Apple returns its static 6000/7000-range genre map; Google returns its categories() constants.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"store"
],
"properties": {
"lang": {
"type": "string",
"description": "Language."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_developer — Get developer portfolio
A developer record plus their published apps. {id} is the Apple artistId (numeric) or the Google developerId string (e.g. "Google LLC").
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"store"
],
"properties": {
"id": {
"type": "string",
"description": "Apple artistId (numeric) or Google developerId string."
},
"lang": {
"type": "string",
"description": "Language. Derived from country when omitted."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Max apps returned. Default 60."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
},
"fullDetail": {
"type": "boolean",
"description": "Google only; expensive. Default false."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}autocomplete_suggest — Autocomplete search suggestions
Up to 5 autocomplete completions for a partial search query. First-class on both stores.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"term",
"store"
],
"properties": {
"lang": {
"type": "string",
"description": "Language. Derived from country when omitted."
},
"term": {
"type": "string",
"description": "Partial query."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_aso_keywords — Get ASO keyword ideas (estimated)
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"term",
"store"
],
"properties": {
"lang": {
"type": "string",
"description": "Language. Derived from country when omitted."
},
"term": {
"type": "string",
"description": "Seed keyword."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_aso_rank — Get ASO keyword rank (estimated, point-in-time)
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"appId",
"keywords",
"store"
],
"properties": {
"lang": {
"type": "string",
"description": "Language. Derived from country when omitted."
},
"appId": {
"type": "string",
"description": "Target app id (Apple trackId or Google package name)."
},
"store": {
"enum": [
"apple",
"google"
],
"type": "string",
"description": "Target store."
},
"country": {
"type": "string",
"description": "ISO-3166 alpha-2 storefront/region, lowercase. Defaults to us."
},
"keywords": {
"type": "string",
"description": "Comma-separated keywords, max 20."
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 637 ms
- 95th percentile latency
- 637 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 637 ms · metadata changed · 13 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http storebridge-mcp https://storebridge-mcp.vercel.app/mcpCodex
codex mcp add storebridge-mcp --url https://storebridge-mcp.vercel.app/mcpCursor
{
"mcpServers": {
"storebridge-mcp": {
"url": "https://storebridge-mcp.vercel.app/mcp"
}
}
}Cline
{
"mcpServers": {
"storebridge-mcp": {
"type": "streamableHttp",
"url": "https://storebridge-mcp.vercel.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"storebridge-mcp": {
"type": "http",
"url": "https://storebridge-mcp.vercel.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http storebridge-mcp https://storebridge-mcp.vercel.app/mcpClaude Desktop
https://storebridge-mcp.vercel.app/mcpWindsurf
{
"mcpServers": {
"storebridge-mcp": {
"serverUrl": "https://storebridge-mcp.vercel.app/mcp"
}
}
}Let your agent find its tools
Find servers like StoreBridge MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.