MCP server

The App Revs MCP server exposes the site's data as 28 tools for Claude, Cursor, VS Code, ChatGPT and any other MCP client. It is a remote server over Streamable HTTP at https://api.apprevs.com/mcp; there is nothing to install or run locally.

Setup

Add the server to your client. The key is optional: without one, 15 of the 28 tools work.

One command; the key goes in the Authorization header.

claude mcp add --transport http apprevs https://api.apprevs.com/mcp --header "Authorization: Bearer <your key>"

Authentication

Tools that read stored data need no credentials. Tools that call the App Store live or touch your account need an API key: sign in with Google, open Settings, generate a key (shown once), and send it as a bearer token.

header
Authorization: Bearer ar_live_your_api_key

Without a key, a tool that needs one returns a tool error saying so; the client sees it as a failed call, not a transport error.

Tools

28 tools in four groups. Each takes the query parameters of one REST endpoint and returns that endpoint's JSON as a single text content block. Required parameters are marked *.

Keywords 5

Example prompt: “Which of "habit tracker", "daily habits", "streaks" and "routine planner" could a new app reach the top 10 for in the UK store, and what do the apps there have in their names?”

keywordno key

Stored analysis of one keyword in a store: popularity, difficulty and its inputs, result count, top 10 apps, related terms; position of app_id when given. 404 when never analyzed here (use analyze_keywords).

app_idintegerApp whose position to report
countrystringStore country code, lowercase (default us)
term*string
analyze_keywordskey

Analyze up to 25 keywords now (live search): popularity, difficulty, top 10 apps, and app_id's position in each.

app_idintegerApp whose position to report
countrystringStore country code, lowercase (default us)
forcebooleanRe-analyze even if fresh
q*stringKeywords, comma separated
keyword_historykey

Monthly Apple Ads popularity of one keyword over the last 15 months, per genre it appears in.

countrystringStore country code, lowercase (default us)
term*string
most_searchedno key

The most searched App Store terms of a month (top 500 per genre), with the 12-month change. Filter by genre, substring, popularity range.

countrystringStore country code, lowercase (default us)
genrestringGenre key, e.g. HEALTH_FITNESS
limitintegerMax rows, 100 anonymous, 5000 signed in
max_popularityinteger
min_popularityinteger
monthstringYYYY-MM (default latest)
offsetinteger
qstringSubstring the term contains
keyword_storeskey

One keyword across every store a project tracks it in: popularity, difficulty, result count and the app's position per store.

project_id*string
term*string

Apps 11

Example prompt: “What does Cal AI rank for that MyFitnessPal does not, and what do Cal AI's last 50 reviews complain about?”

search_appskey

Search the App Store live for apps by name or keyword, Apple's order: id, name, developer, rating, count, genre, price, version.

countrystringStore country code, lowercase (default us)
limitintegerMax results, up to 50 (default 10)
q*string
appkey

Full App Store record of one app in a store: metadata, rating, count, version, release and update dates, description.

countrystringStore country code, lowercase (default us)
track_id*integerNumeric App Store id of the app
app_keywordsno key

Every analyzed keyword the app ranks in the top 200 for in a store, with position, popularity and difficulty, plus the genre charts it is on.

countrystringStore country code, lowercase (default us)
track_id*integerNumeric App Store id of the app
scan_app_keywordskey

Find and analyze up to 25 candidate keywords for an app (its name, Apple's suggestions, head terms). Runs in the background unless wait is true; then read app_keywords.

countrystringStore country code, lowercase (default us)
forceboolean
track_id*integerNumeric App Store id of the app
waitbooleanRun inline and answer when done (about a minute)
app_overviewkey

One view of an app: keywords it ranks for and their demand, the app it loses to and on which keywords, what that app's users complain about, missing languages, next steps.

countrystringStore country code, lowercase (default us)
track_id*integerNumeric App Store id of the app
app_competitorsno key

Apps sharing the top 10 of the keywords this app ranks for: shared keywords and how many of them each is ahead on.

countrystringStore country code, lowercase (default us)
track_id*integerNumeric App Store id of the app
app_chartsno key

Every genre chart (top free, paid, grossing) the app is on across the 20 largest stores, with position and the week's movement.

track_id*integerNumeric App Store id of the app
app_positionsno key

Per store, the searched terms the app is in the top 10 for and the best generic one, from stores where it was checked.

track_id*integerNumeric App Store id of the app
app_rating_historyno key

Daily rating and rating-count history of an app in a store, its releases, and written reviews per day.

countrystringStore country code, lowercase (default us)
daysintegerDays back, up to 365 (default 30)
track_id*integerNumeric App Store id of the app
app_reviews_summaryno key

Star split (positive, neutral, negative) of the stored written reviews of an app in a store.

countrystringStore country code, lowercase (default us)
track_id*integerNumeric App Store id of the app
app_reviewskey

Latest written reviews of an app in a store (title, text, rating, version, date) with the rating distribution.

countrystringStore country code, lowercase (default us)
limitintegerMax reviews, up to 490 (default 50)
track_id*integerNumeric App Store id of the app

Publishers and the store 3

Example prompt: “Which Health & Fitness apps released in the last 30 days already rank for something, and how many ratings did they need?”

developerno key

A publisher and every app they sell in a store: rating, count, ratings gained last week, best chart place, release and update dates.

artist_id*integerNumeric App Store developer (artist) id
countrystringStore country code, lowercase (default us)
new_appsno key

Apps released in the last days that already rank in a search top 200 or on a genre chart, most rated first.

countrystringStore country code, lowercase (default us)
daysintegerUp to 180 (default 30)
genreintegerApple genre id, e.g. 6013 Health & Fitness
limitintegerMax rows
rising_appsno key

Apps gaining ratings fastest in a store: ratings gained and percent between the first and last nightly count inside the window, growth per day first.

countrystringStore country code, lowercase (default us)
daysintegerUp to 90 (default 7)
exclude_genreintegerApple genre id to leave out, e.g. 6014 games
genreintegerApple genre id, e.g. 6013 Health & Fitness
launchedintegerOnly apps released in the last N days
limitintegerMax rows
min_gainintegerLeast ratings gained to qualify (default 20)

Benchmarks 4

Example prompt: “For a Health & Fitness app, what does an install cost on Apple Search Ads in the US, what share of that cost does its lifetime value recover, and how does trial-to-paid compare to other categories?”

benchmarks_categoriesno key

App-economics benchmarks per app category: Apple Search Ads cost (CPT, CPI, CPA) and tap-to-install, install-to-trial and trial-to-paid conversion, 12-month LTV per install and per payer, prices, store conversion, average rating and day-30 retention. One row per category; null where a figure is not published.

benchmarks_countriesno key

Apple Search Ads cost across 42 markets: cost per tap, per install and per acquisition, tap-through and tap-to-install rates, and CPM.

benchmarks_regionsno key

Subscription funnel by region (North America, Western Europe, APAC, LATAM, India/SEA, MEA): revenue per install, install-to-trial, trial-to-paid, install-to-paid, 12-month LTV per payer, plan mix and refund rate.

benchmarks_allno key

The full app-economics benchmark dataset, including the reference tables not in the per-slice tools: campaign-type and ad-placement cost, ad eCPM by format and region, AI vs non-AI apps, trial-length effect, monetization-model mix, discovery mix and year-over-year trends.

Your apps and lists 5

Example prompt: “Add those four terms to my app in the US and Germany, then tell me next week what moved.”

my_projectskey

Your projects: each app or idea you follow, its store, role and keyword counts.

tracked_keywordskey

A project's keyword list for one store: each keyword's latest analysis and position history, the app's releases, and `visibility` (sum of popularity x position weight, now vs 7 days ago).

countrystringStore country code, lowercase (default us)
project_id*string
track_keywordskey

Add keywords to a project's list for a store and analyze them now; returns their analysis.

countrystringStore country code, lowercase (default us)
forceboolean
keywords*arrayUp to 25 keywords
project_id*string
untrack_keywordkey

Remove one keyword row (its id from tracked_keywords) from a project's list.

row_id*integer
my_weekkey

This week for every app you follow: ratings gained vs the week before, chart and keyword moves, releases, listing changes, review split.

daysintegerUp to 30 (default 7)

Example

A tools/call request for keyword on “habit tracker” in the US store, and the response as it came back at this build. The result is one text block holding the endpoint's JSON; the first three of the top 10 are shown.

request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "keyword",
    "arguments": {
      "term": "habit tracker",
      "country": "us"
    }
  }
}
response, content[0].text
{
  "term": "habit tracker",
  "popularity": 61,
  "difficulty": 69,
  "difficulty_inputs": {
    "fresh": 8,
    "giants": 2,
    "median_ratings": 14330,
    "title_match": 8,
    "top10_ratings": 1059590
  },
  "result_count": 192,
  "top_apps": [
    {
      "avg": 4.79192,
      "developer": "InnerGrow",
      "genre": "Productivity",
      "icon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/d3/ef/00/d3ef00c2-9b1c-b5ef-0464-2e08231b80de/AppIcon-pink-gr-0-0-1x_U007epad-0-1-0-sRGB-85-220.png/60x60bb.jpg",
      "id": 1438388363,
      "name": "Habit Tracker",
      "price": 0,
      "ratings": 147524,
      "updated": "2026-08-15"
    },
    {
      "avg": 4.84903,
      "developer": "Sebastian Roehl",
      "genre": "Productivity",
      "icon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/79/91/fe/7991fe78-b459-1397-205f-54525a639bde/NewAppIcon-0-0-1x_U007ephone-0-1-sRGB-85-220.png/60x60bb.jpg",
      "id": 6443918070,
      "name": "Habit Tracker - HabitKit",
      "price": 0,
      "ratings": 2431,
      "updated": "2026-09-21"
    },
    {
      "avg": 4.8365,
      "developer": "Maximilian Munker",
      "genre": "Productivity",
      "icon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/23/08/7f/23087fb9-5ddc-bc14-4574-18a2b13fb909/AppIcon-0-0-1x_U007epad-0-8-0-85-220.png/60x60bb.jpg",
      "id": 1547137474,
      "name": "Onrise: Habit Tracker & Focus",
      "price": 0,
      "ratings": 2575,
      "updated": "2026-08-25"
    }
  ]
}

Protocol

  • Transport: Streamable HTTP, stateless, JSON responses. POST a JSON-RPC 2.0 body to the URL; no session id, no server-sent events.
  • Methods: initialize, ping, tools/list, tools/call. GET and DELETE on the URL answer 405.
  • Errors: a failed tool call returns isError: true with the message (a missing key, an app not found); malformed requests get a JSON-RPC error.
  • Rate limits: none enforced; the same caching as the REST API applies.
All documentation