Skip to main content
Glama

App Store Opportunity Tracker

Rank an app on keywords by country

app_tracker_keyword_rank
Read-onlyIdempotent

Use this when the user asks where an App Store app ranks for search phrases by country, or how much demand or competition a phrase has. Pass app (id or link), keywords (1 to 20) and countries (up to 10, default us). Per keyword and country: rank is the app's place in the iTunes Search API's top 200 (not_ranked past it, never guessed); volume 0-100 is the top 50 names' match to the phrase (whole phrase 1, else half the word share), summed over 50; difficulty 0-100 is the top 10 rating counts on a log scale (10 ratings 0, a million 1), summed over 10; weakMarket: not ranked while 10 other apps are. fetchedAt is the read time. A call waits about 8 s; cells not read by then are pending and keep being read: call again after retryAfterSeconds while pending falls. warnings says why reads fail.

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",
      "keywords": [
        "photo editor"
      ],
      "countries": [
        "us",
        "jp"
      ]
    },
    "name": "app_tracker_keyword_rank"
  }
}

Input Schema

NameRequiredDescriptionDefault
appYesThe App Store app to rank, as an id or link, such as 1197354394.
keywordsYes1 to 20 search phrases as people type them in the App Store, such as photo editor.
countriesNoUp to 10 two-letter store countries, such as us, gb and jp. 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.
cellsYes
sourceYesWho the data comes from, to cite and to check it against.
pendingYes
answeredYes
keywordsYes
warningsYesWhy cells are pending: the newest search failure of the last 10 minutes.
countriesYes
fetchedAtYes
weakMarketsYes
stoppedUntilYesSet when the store answered 403 or 429, or failed 3 times in a row: no search is sent before this time.
untrusted_sourceYes
retryAfterSecondsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial operational detail: ~8 s wait, pending cells, retryAfterSeconds polling, warnings field, and the guarantee that ranks are never guessed. This is exactly the extra 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 inputs before the metric definitions, and every sentence carries information. It is dense — the metric definitions are long — but not padded.

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 read-only ranking tool with an output schema, this covers the inputs, the metric semantics (rank, volume, difficulty, weakMarket, fetchedAt), and the async polling protocol. Nothing needed to invoke or interpret it correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description reinforces meaning: keywords are 'as people type them', countries default to us and are capped at 10, keywords capped at 1-20. It adds marginal but real value over the schema.

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 and resource: ranking an App Store app for search phrases per country, plus demand/competition scoring. It is clearly distinguishable from siblings like app_tracker_keywords or app_tracker_opportunities.

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?

Opens with an explicit trigger ('Use this when the user asks where an App Store app ranks... or how much demand or competition a phrase has'), giving clear use context. It does not name or exclude sibling tools, so 4 rather than 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.