Skip to main content
Glama

App Store Opportunity Tracker

Estimate an app's downloads

app_tracker_estimate
Read-onlyIdempotent

Use this when the user asks how many downloads an App Store app gets, such as "how many downloads does Daily Themed Crossword get a month?". Pass app (an App Store id or link). Returns downloads30d, a range (low, high, ratio) with method (rank_curve, rank_and_velocity, rating_velocity or rank_bound), confidence and basis lines, plus download growth over 7, 30 and 90 days (null until the history is that long). revenue30d is null and warnings says why: the grossing chart has no allowed source. Worldwide App Store, last 30 days. rank_bound means only an upper bound is known.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "app": "1197354394",
      "country": "gb"
    },
    "name": "app_tracker_estimate"
  }
}

Input Schema

NameRequiredDescriptionDefault
appYesApp Store id or link, such as 1197354394 or https://apps.apple.com/app/id1197354394.
countryNoTwo-letter store country used to find the app, such as us. The estimate is always worldwide. Default us.

Output Schema

NameRequiredDescriptionDefault
appYes
noteYes
as_ofYesISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch.
methodYes
sourceYesWho the data comes from, to cite and to check it against.
readingsYes
warningsYes
fetchedAtYes
untrusted_sourceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "app",
      -  "readings",
      -  "method",
      -  "fetchedAt",
      -  "untrusted_source",
      -  "note",
      -  "as_of",
      -  "source"
      -]New value: +[
      +  "app",
      +  "readings",
      +  "method",
      +  "warnings",
      +  "fetchedAt",
      +  "untrusted_source",
      +  "note",
      +  "as_of",
      +  "source"
      +]
  2. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "app": "1197354394",
      +    "country": "gb"
      +  }
      +]
  3. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations by disclosing return semantics: null growth fields until history is long enough, revenue30d always null with warnings explaining why, and what rank_bound implies. This is exactly the behavioral context annotations cannot carry.

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

Conciseness4/5

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

Front-loads the trigger and example, then the required parameter, then output caveats – a sensible ordering. It is dense and slightly long on return-field detail given an output schema exists, but no sentence is pure filler.

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 two-parameter read tool with full schema coverage, annotations, and an output schema, nothing an agent needs is missing. The null-field and rank_bound explanations preempt the most likely misinterpretations of the response.

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%, so both parameters are already documented, and the description only restates 'Pass app (an App Store id or link)'. It does not mention country at all, though the schema covers it (including that the estimate is always worldwide). Baseline 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?

States a specific verb+resource ('how many downloads an App Store app gets') and anchors it with a concrete user-question example. It is clearly the download-estimation tool, distinguishable from siblings like app_tracker_lookup (metadata) or app_tracker_charts (rankings).

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?

Gives an explicit, quotable trigger condition ('Use this when the user asks how many downloads...'), which is more than most definitions offer. It stops short of naming when NOT to use it or which sibling handles adjacent questions (lookup vs charts), so it earns a 4 rather than a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.