Skip to main content
Glama
plahteenlahti

@perttu/app-store-mcp

@perttu/app-store-mcp

An MCP server for looking up apps, reviews, ratings, charts, in-app purchases, privacy details, and version history on Apple's App Store. It is built on @perttu/app-store-scraper and does not require an API key.

Requirements

  • Node.js 20 or newer

  • An MCP client that can launch local stdio servers

Related MCP server: aso-mcp

Setup

You do not need to install the package globally. Add this to your MCP client's server configuration:

{
  "mcpServers": {
    "app-store": {
      "command": "npx",
      "args": ["-y", "@perttu/app-store-mcp"]
    }
  }
}

Restart the client after changing its configuration. It should discover eleven tools whose names begin with app_store_.

If your client cannot find npx, replace npx with its absolute path. Run which npx on macOS or Linux, or where npx on Windows, to find it.

To install the executable yourself instead:

npm install --global @perttu/app-store-mcp

Then use app-store-mcp as the command and omit the arguments array.

Tools

Tool

What it returns

app_store_app

Full metadata for one app, addressed by track ID or bundle ID

app_store_search

Keyword search results, with pagination and an IDs-only option

app_store_list

Ranked App Store collections, optionally filtered by category

app_store_developer

Apps published by a developer

app_store_reviews

Recent or helpful reviews, up to page 10

app_store_ratings

Total rating count and the 1–5 star distribution

app_store_similar

Apps related to a given app

app_store_suggest

Autocomplete suggestions for a search term

app_store_privacy

Privacy labels and policy information

app_store_version_history

Previous versions, dates, and release notes

app_store_in_app_purchases

Top in-app purchase names and localized prices

Most tools accept a two-letter country code. The default is us. Tools backed by Apple's lookup and search APIs also accept a lang value such as en-us.

Every tool is read-only. Results are returned as both structured content and formatted JSON text, so they work with clients that support either response form.

Arguments

country is optional and defaults to us. Use a two-letter store code such as fi, gb, or jp; uppercase codes are accepted too. lang is an optional locale such as en-us.

Tool

Required

Optional

app_store_app

id or appId

country, lang, ratings

app_store_search

term

country, lang, num (1–200), page (from 1), idsOnly

app_store_list

country, lang, collection, category, num (1–200), fullDetail

app_store_developer

devId

country, lang

app_store_reviews

id or appId

country, lang, page (1–10), sort

app_store_ratings

id

country

app_store_similar

id or appId

country, lang

app_store_suggest

term

country

app_store_privacy

id

country

app_store_version_history

id

country

app_store_in_app_purchases

id

country

id, devId, and category are numeric. appId is the bundle identifier, for example com.apple.Pages.

The available collections are:

topmacapps                 topfreemacapps           topgrossingmacapps
toppaidmacapps             newapplications          newfreeapplications
newpaidapplications        topfreeapplications      topfreeipadapplications
topgrossingapplications    topgrossingipadapplications
toppaidapplications        toppaidipadapplications

Review sort is either mostRecent (the default) or mostHelpful. category is one of Apple's numeric App Store genre IDs; common values include games (6014), education (6017), productivity (6007), utilities (6002), and business (6000). The complete allowed set is included in the tool's input schema and exported as category from the package.

Example requests

The exact prompt is up to the client. These are representative:

Find the first five App Store results for "interval timer" in Finland.

Show the rating breakdown and recent reviews for app 553834731.

What data does app 284882215 say it collects?

app_store_list can fetch full metadata for every chart entry with fullDetail: true. That makes one additional App Store request per result, so use it with a small num value.

Checking the server

The MCP Inspector can launch the published package and call its tools directly:

npx @modelcontextprotocol/inspector npx -y @perttu/app-store-mcp

Running from source

git clone https://github.com/plahteenlahti/app-store-mcp.git
cd app-store-mcp
npm ci
npm run build
node dist/cli.js

The last command waits for MCP messages on stdin; it does not open an interactive prompt. For a local client configuration, point command at node and pass the absolute path to dist/cli.js in args.

Useful development commands:

npm test
npm run check
npm run build

Agent skill

The repository includes a concise Agent Skills workflow at skills/app-store-research. It teaches agents to choose the narrowest tool, reuse identifiers, and avoid unnecessarily large responses.

Codex and Claude Code discover it automatically while working in this repository through .agents/skills and .claude/skills. To use it in other projects, copy the canonical skill folder to your user skill directory:

# Codex
cp -R skills/app-store-research ~/.agents/skills/

# Claude Code
cp -R skills/app-store-research ~/.claude/skills/

Notes

This project reads public Apple endpoints. Apple can change those endpoints or apply rate limits without notice. The server deliberately does not cache or throttle requests; the calling client remains in control of when tools run.

This project is not affiliated with or endorsed by Apple Inc. App Store is a trademark of Apple Inc.

License

MIT

Available Tools

11 tools
app_store_appGet App DetailsA
Read-only

Get App Store metadata for one app by numeric track ID or bundle identifier. Can include the rating histogram.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNumeric App Store track ID
langNoResponse locale, such as en-us
appIdNoBundle identifier, such as com.apple.Pages
countryNoApp Store country; defaults to US
ratingsNoInclude the 1–5 star rating histogram

Output Schema

ParametersJSON Schema
NameRequiredDescription
appYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's read-only 'Get' wording is consistent. It adds the behavioral detail that the rating histogram can optionally be included, but does not disclose other nuances such as precedence or identifier requirements; with annotations covering safety, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences; the key verb, resource, and invocation options are front-loaded. No filler or redundancy, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema, rich parameter schema, and read-only annotations, the description provides enough to invoke the tool correctly for common cases. It leaves a minor ambiguity about requiring at least one identifier, since the schema lists no required fields, but overall it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds context that id and appId are two alternative identifier types and that ratings toggles the histogram, but does not go beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('App Store metadata'), the scope ('for one app'), and the accepted identifiers ('numeric track ID or bundle identifier'). This distinguishes it from sibling search/review/ratings tools by emphasizing it targets a single app by identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explain when to choose this tool over siblings like app_store_search or app_store_ratings, nor does it state exclusions or prerequisites (e.g., that id or appId should be provided). It implies usage through the identifier wording but gives no explicit context or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_developerGet Developer AppsA
Read-only

Get all apps published under an App Store developer account.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse locale, such as en-us
devIdYesNumeric App Store developer ID
countryNoApp Store country; defaults to US

Output Schema

ParametersJSON Schema
NameRequiredDescription
appsYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and dynamic data. The description adds the scope constraint 'all apps,' but no additional behavioral details like pagination or response limits. This matches the baseline where annotations carry the safety burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the action and resource, with zero filler words. It is immediately scannable and directly addresses the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with an output schema and annotations, this description is complete. The agent knows what to expect (all apps for a developer) and can rely on the schema for parameters and output, so no further elaboration is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all parameters (devId, lang, country) having clear inline descriptions. The tool description does not add parameter-specific meaning, so it meets the baseline of 3 without needing to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') plus a clear resource ('all apps published under an App Store developer account'). It distinguishes from sibling tools like search or app lookup by scoping to a developer account, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly defines the use case: when you need all apps for a given developer ID. It does not explicitly compare to alternatives or state exclusions, but the resource scope (developer account) clearly differentiates it from search or listing tools, providing enough context for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_in_app_purchasesGet In-App PurchasesA
Read-only

Get the top in-app purchases shown on an app's App Store page, with localized names and formatted prices.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNumeric App Store track ID
countryNoApp Store country; defaults to US

Output Schema

ParametersJSON Schema
NameRequiredDescription
purchasesYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context about localization and the 'top' qualifier, but provides no additional behavioral details (e.g., pagination, limits). This aligns with the calibration example for get_calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence of 14 words. It is front-loaded with the primary action ('Get'), clearly states the target resource, and includes relevant output characteristics without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of a complete input schema, output schema, and annotations, the description is fully adequate. It specifies the purpose and important output details (localized names and prices), leaving no critical gaps for an agent to misuse the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both `id` and `country` fully described. The description adds marginal value by implying country affects localization and price formatting, but the schema already provides the necessary semantics for both parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets 'top in-app purchases shown on an app's App Store page' and specifies 'localized names and formatted prices.' This is a specific verb+resource combination that distinguishes it from sibling tools like app_store_reviews or app_store_app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is for the top in-app purchases on an app's App Store page. It does not explicitly name alternatives or exclusion conditions, but the purpose is unambiguous relative to the sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_listList App Store ChartsA
Read-only

Get a ranked App Store collection, optionally narrowed to a category. Full detail makes one additional request per app.

ParametersJSON Schema
NameRequiredDescriptionDefault
numNoNumber of apps
langNoResponse locale, such as en-us
countryNoApp Store country; defaults to US
categoryNoNumeric App Store genre ID
collectionNoChart or collection to retrieve
fullDetailNoFetch full metadata for every result

Output Schema

ParametersJSON Schema
NameRequiredDescription
appsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a significant operational cost: 'Full detail makes one additional request per app,' which is beyond the readOnlyHint annotation. It doesn't contradict annotations. It could have mentioned pagination or default behavior, but the per-app request warning adds useful transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler. Each sentence adds essential information: the core purpose and the cost caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's core purpose, category filtering, and a cost caveat. With a fully-described schema and an output schema present, it is sufficient, though it could briefly mention how to select different collections or defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3. The description adds meaning for 'category' (optional narrowing) and 'fullDetail' (extra request per app), going slightly beyond the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as retrieving a ranked App Store collection, with optional category narrowing. This distinguishes it from siblings like app_store_reviews, app_store_search, and app_store_developer, which target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for chart/collection retrieval and notes optional category narrowing, but does not explicitly compare with alternative tools like app_store_search or app_store_app, nor provide when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_privacyGet App Privacy DetailsA
Read-only

Get privacy labels and policy information published for an App Store app.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNumeric App Store track ID
countryNoApp Store country; defaults to US

Output Schema

ParametersJSON Schema
NameRequiredDescription
privacyYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read operation. The description adds that the data is 'published' privacy labels and policy info, but discloses no additional behaviors like rate limits or error handling. This is acceptable given the annotations but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of about ten words, front-loaded with the action and resource, with zero waste or redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists to explain return values, the annotations cover safety, and the parameters are self-explanatory via the schema, the description is sufficient for the agent to understand the tool's scope. No critical context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides full descriptions for both parameters (id and country), achieving 100% coverage. The description itself adds no parameter-level detail, so it remains at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Get' and names a precise resource ('privacy labels and policy information') for an App Store app. It clearly distinguishes this tool from siblings like app_store_reviews or app_store_ratings, which target different data types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is for retrieving privacy-related app data. However, it stops short of explicitly stating when to use this tool over alternatives or noting exclusions, so it misses the top score for guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_ratingsGet App RatingsA
Read-only

Get an app's total rating count and its 1–5 star histogram.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNumeric App Store track ID
countryNoApp Store country; defaults to US

Output Schema

ParametersJSON Schema
NameRequiredDescription
ratingsYes
histogramYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the output shape (histogram) but does not disclose additional behaviors beyond what annotations already cover. The readOnlyHint indicates a safe read, and openWorldHint suggests variable results, both provided by annotations. With annotations present, the description does not contradict or significantly extend them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately communicates the tool's purpose. It contains no extraneous details, making it optimally front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with a well-defined schema and output schema, the description is sufficient. It clearly states what the tool returns, and the schema covers parameter details, so an agent has all necessary context to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides detailed descriptions for both parameters (id and country) with 100% coverage. The description adds no extra parameter context, so it meets the baseline but does not exceed schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: retrieving an app's total rating count and its 1-5 star histogram. It uses a specific verb ('Get') and resource ('an app's total rating count'), and it stands out from siblings like app_store_reviews by focusing on aggregate ratings rather than individual reviews.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description implies its use for rating summaries, but it does not explicitly mention alternatives or when to prefer this over app_store_reviews or app_store_app.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_reviewsGet App ReviewsA
Read-only

Get a page of recent or helpful App Store reviews for an app.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNumeric App Store track ID
langNoResponse locale, such as en-us
pageNoReview page, from 1 to 10
sortNoReview order
appIdNoBundle identifier, such as com.apple.Pages
countryNoApp Store country; defaults to US

Output Schema

ParametersJSON Schema
NameRequiredDescription
reviewsYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already indicate a safe read operation. The description adds minor context about pagination ('a page') and sorting ('recent or helpful'), but does not disclose requirements like needing either id or appId, or country defaults. This is a modest addition beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that immediately conveys the tool's purpose. It is well-front-loaded and contains no redundant information, making it highly concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and full parameter descriptions, the description is largely complete. It effectively communicates the core purpose, but it could benefit from noting that reviews differ from ratings (given the app_store_ratings sibling) or specifying that either id or appId is required. Overall, it is adequate for a simple read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all six parameters described. The description's mention of 'recent or helpful' aligns with the sort parameter but adds no new semantic meaning beyond the schema. It neither clarifies the id/appId relationship nor parameter constraints, so it meets the baseline without exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a page of App Store reviews, with 'page' and 'recent or helpful' indicating pagination and sorting. However, it does not explicitly differentiate from the sibling tool app_store_ratings, which could cause confusion about scope (reviews vs ratings).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need app reviews but provides no explicit guidance on when to use this tool over alternatives like app_store_ratings or app_store_search. There are no exclusions or alternative tool mentions, leaving some ambiguity in tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_similarGet Similar AppsB
Read-only

Get the apps shown as related to a given App Store app.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNumeric App Store track ID
langNoResponse locale, such as en-us
appIdNoBundle identifier, such as com.apple.Pages
countryNoApp Store country; defaults to US

Output Schema

ParametersJSON Schema
NameRequiredDescription
appsYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to restate these. However, the description adds no behavioral details beyond a basic purpose statement, such as what happens when both 'id' and 'appId' are supplied, parameter precedence, or locale defaulting behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence of 12 words. It is front-loaded and contains no filler or redundant information, making it highly concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema and annotations, the description is incomplete because it does not explain which of the four optional parameters is necessary to identify the app. This is critical for invocation and is not adequately covered by the schema descriptions alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 4 parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds no extra semantic meaning, but the schema already documents each parameter adequately, so no deduction is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get the apps shown as related to a given App Store app' clearly states a specific verb and resource, distinguishing it from sibling tools like app_store_search, app_store_reviews, or app_store_ratings. It unambiguously conveys the tool's function of retrieving similar apps for a given app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, and there is no mention of prerequisites such as needing either 'id' or 'appId' to identify the app. The optional parameters make usage ambiguous without additional instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_suggestGet Search SuggestionsA
Read-only

Get App Store autocomplete suggestions for a partial search term.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesPartial search term
countryNoApp Store country; defaults to US

Output Schema

ParametersJSON Schema
NameRequiredDescription
suggestionsYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and external access. The description adds the autocomplete context but discloses no additional behavioral traits such as rate limits, result limits, or error handling. With an output schema present, this is adequate but not deeply transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that clearly states the tool's purpose without any filler or unnecessary detail. It is well-structured and immediately understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter read-only tool with full schema coverage and an output schema, the description is sufficiently complete. It covers the core purpose and appropriately relies on the schema for parameter details and return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% parameter coverage: 'term' is described as 'Partial search term' and 'country' is described with a default value. The description itself adds no parameter-specific information, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get App Store autocomplete suggestions for a partial search term.' This uses a specific verb ('Get') and resource ('autocomplete suggestions'), and explicitly distinguishes it from sibling tools like app_store_search (full search) and app_store_similar (similar apps) by focusing on partial-term suggestions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the intended scenario: providing autocomplete suggestions for a partial search term. This gives clear context for when to use the tool. However, it does not name alternatives or exclusions, though the autocomplete framing strongly implies it is for suggestion-style queries rather than full search or listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

app_store_version_historyGet App Version HistoryA
Read-only

Get past versions, release dates, and release notes for an App Store app.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNumeric App Store track ID
countryNoApp Store country; defaults to US

Output Schema

ParametersJSON Schema
NameRequiredDescription
versionsYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds the specific data fields returned but does not disclose behavioral aspects like rate limits or pagination. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the verb and object, and contains no unnecessary detail. It is highly concise and structured effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering read-only/open-world behavior, the description is complete enough. It names the return data categories (past versions, release dates, release notes), and remaining details like country default and return format are in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of parameters (id and country, including the country default). The description adds no additional parameter semantics, but the schema already provides sufficient meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and names the resource ('App Store app') with exact data fields (past versions, release dates, release notes). This clearly distinguishes it from sibling tools like app_store_reviews or app_store_ratings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a clear use case—retrieving version history for an app—but does not explicitly mention when to use this tool over siblings or provide exclusions. The context is clear enough from the description and tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation4/5

Each tool targets a distinct data type (search, reviews, ratings, app details, etc.), but app_store_app and app_store_ratings have minor overlap since app metadata can include the rating histogram. Overall, descriptions clearly delineate purpose.

Naming Consistency5/5

All 11 tools follow a consistent app_store_ prefix with snake_case. While the suffix part of speech varies (nouns, verbs, adjectives), the pattern is highly predictable and recognizable.

Tool Count5/5

11 tools is well within the ideal range and each tool addresses a distinct read-only aspect of App Store data. No tool feels redundant or out of place.

Completeness5/5

The set covers all major App Store information surfaces: search, lookup, collections, developer listings, ratings, reviews, similar apps, suggestions, privacy, version history, and in-app purchases. There are no obvious dead ends for common use cases.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    MCP server that scrapes app data from Google Play and Apple App Store, providing tools for search, details, reviews, and similar apps.
    8
    39
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server for App Store Optimization that provides keyword research, competitor analysis, review sentiment, and metadata optimization using real App Store data without requiring an API key.
    29
    4
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An open-source MCP server for live Apple App Store competitor research, enabling AI agents to search apps, fetch metadata, compare competitors, and retrieve reviews and top charts as structured JSON.
    7
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/plahteenlahti/app-store-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server