Ask your AI assistant about your rankings
Connect your account to Claude, ChatGPT, Gemini or any MCP client once, then ask in plain language. Your assistant reads your live ranking data and answers. It can never change anything.
Included in Pro, Ultra, Enterprise plans.
Connect your assistant
The server address is the same everywhere:
https://mcp.myappstoreranking.com/mcp
Adding it opens a sign-in page on myappstoreranking.com. Approve the connection there and your assistant is ready. You can disconnect at any time from Settings in your dashboard.
- Open Settings, then Connectors.
- Click Add custom connector.
- Paste the address below and click Add.
- Click Connect, sign in on myappstoreranking.com and approve the connection.
https://mcp.myappstoreranking.com/mcp
What to ask
- Which apps am I tracking?
- How did my apps do over the last 7 days?
- Where does my app rank across Europe right now?
- Show my app's daily rank in France over the last month.
- Who is in the French Music top chart on iPhone today?
- Who is beating my app right now, and by how much?
- Who moved into the French Music top 10 this week?
- What happened with my apps overnight?
Many assistants can run the same question on a schedule, so a daily summary of what moved overnight costs one or two of your daily questions.
Tools
get_app_country_ranks
The country grid for a single app over a date window, with the previous window's rank for comparison, plus the per-platform breakdown. Works for any app in the catalog, not only tracked ones, but untracked apps return a single recent day rather than a full window.
Example: “Where does my app rank across Europe right now?”
| Parameter | Type | Notes |
|---|---|---|
| appStoreId* | string | Apple numeric id or Play package name, as returned by list_my_apps. |
| rangeDays | integer 1 to 365 | Defaults to 7. |
| end | date (YYYY-MM-DD) | Last day of the window. Defaults to the most recent day with data. |
| platforms | list of iphone | ipad | mac | android | Comma-separated filter. |
| countries | list of country code (e.g. fr) | Comma-separated filter. |
Endpoint: GET /v1/apps/{appStoreId}/ranks · scope apps:read
get_app_history
Raw rank observations, newest first, for trend questions. Filter by country, platform, chart type or category, because an unfiltered portfolio-wide history is large and will be truncated. Only apps the user tracks have history.
Example: “Show my app's daily rank in France over the last month.”
| Parameter | Type | Notes |
|---|---|---|
| appStoreId* | string | Apple numeric id or Play package name, as returned by list_my_apps. |
| sinceDays | integer 1 to 365 | Defaults to 90. |
| country | country code (e.g. fr) | |
| platform | iphone | ipad | mac | android | |
| chartType | free | paid | |
| genreId | integer 0 or more | Category id from list_reference_data. 0 is the overall chart. |
| limit | integer 1 to 2000 | Defaults to 500. |
Endpoint: GET /v1/apps/{appStoreId}/history · scope rankings:read
get_apps_overview
One row per tracked app: how many countries it charted in, how many top 5 and top 25 placements it holds, the change against the equal-length window before, and its single best chart position. Use this for 'how is my portfolio doing', then get_app_country_ranks to drill into one app.
Example: “How did my apps do over the last 7 days?”
| Parameter | Type | Notes |
|---|---|---|
| rangeDays | integer 1 to 365 | Defaults to 7. |
| end | date (YYYY-MM-DD) | Last day of the window. Defaults to the most recent day with data. |
| platforms | list of iphone | ipad | mac | android | Comma-separated filter. |
| countries | list of country code (e.g. fr) | Comma-separated filter. |
Endpoint: GET /v1/apps/overview · scope apps:read
get_chart_top
Who ranks in a given country, platform, chart type and category on a given day, flagging the rows the user tracks. Defaults to the most recent captured day. Use list_reference_data for valid country codes, platforms and category ids.
Example: “Who is in the French Music top chart on iPhone today?”
| Parameter | Type | Notes |
|---|---|---|
| country* | country code (e.g. fr) | |
| platform* | iphone | ipad | mac | android | |
| chartType* | free | paid | |
| genreId* | integer 0 or more | Category id from list_reference_data. 0 is the overall chart. |
| date | date (YYYY-MM-DD) | Defaults to the most recent captured day. |
Endpoint: GET /v1/charts/top · scope rankings:read
get_daily_report
The same analysis the user's email report is built from: portfolio summary, what needs attention, wins, competitor movements and new entrants. The best single call for a scheduled 'what happened overnight' digest.
Example: “What happened with my apps overnight?”
| Parameter | Type | Notes |
|---|---|---|
| frequency | daily | weekly | Defaults to daily. |
Endpoint: GET /v1/report · scope reports:read
get_leaders
Which apps dominated a chart over a date window: median rank, best rank, days present, days at number one, movement against the previous window, and whether the app is new to the chart. This is the tool for 'who moved into the top 10 this week'.
Example: “Who moved into the French Music top 10 this week?”
| Parameter | Type | Notes |
|---|---|---|
| country* | country code (e.g. fr) | |
| platform* | iphone | ipad | mac | android | |
| chartType* | free | paid | |
| genreId* | integer 0 or more | Category id from list_reference_data. 0 is the overall chart. |
| rangeDays | integer 1 to 365 | Defaults to 30. |
| end | date (YYYY-MM-DD) | Last day of the window. Defaults to the most recent day with data. |
| limit | integer 1 to 60 | Defaults to 25. |
Endpoint: GET /v1/leaders · scope rivals:read
get_rivals
Competitors discovered from the data rather than declared: apps that appear in the same charts as the user's own apps and sit ahead of them, ranked by relevance, with how often and by how much they lead.
Example: “Who is beating my app right now, and by how much?”
| Parameter | Type | Notes |
|---|---|---|
| rangeDays | integer 1 to 365 | Defaults to 30. |
| end | date (YYYY-MM-DD) | Last day of the window. Defaults to the most recent day with data. |
| platforms | list of iphone | ipad | mac | android | Comma-separated filter. |
| countries | list of country code (e.g. fr) | Comma-separated filter. |
| limit | integer 1 to 60 | Defaults to 25. |
Endpoint: GET /v1/rivals · scope rivals:read
list_my_apps
Returns every tracked app with its store id, store, platforms, categories and whether it is one of the user's own apps or a competitor they watch. Call this first: every other tool identifies an app by the appStoreId returned here.
Example: “Which apps am I tracking?”
No parameters.
Endpoint: GET /v1/apps · scope apps:read
list_reference_data
The enum values every other tool accepts. Call this before guessing a country code or category id: invalid parameters fail, and failed calls still count against the daily quota.
No parameters.
Endpoint: GET /v1/reference
HTTP API
The tools above are a thin layer over a versioned read-only REST API. Every tool is exactly one endpoint, with the same parameters, the same limits and the same responses. The full machine-readable contract is published as OpenAPI:
https://api.myappstoreranking.com/v1/openapi.json
Requests carry an access token in an Authorization header:
curl -H "Authorization: Bearer $TOKEN" \ "https://api.myappstoreranking.com/v1/apps"
Today, tokens are issued by the assistant connection flow above. Self-service API keys are on the way; the endpoints and the contract will not change when they arrive.
Scopes
apps:readthe apps you track and how they rankrankings:readchart positions and rank historyrivals:readcompetitors and category leadersreports:readyour daily and weekly reports
Limits
| Plan | Questions per day |
|---|---|
| Solo | Not included |
| Pro | 50 |
| Ultra | 100 |
| Enterprise | 200 |
- The daily quota is per account and resets at 00:00 UTC. It is shared across every assistant and key you connect.
- Bursts are limited to 20 calls per minute per connection.
- Date windows are capped at 365 days. The dashboard’s Lifetime range is not available programmatically.
Errors
| Code | HTTP | What to do |
|---|---|---|
| invalid_request | 400 | Invalid parameters. Fix the parameters before calling again; retrying the same call will fail identically and still counts against the daily quota. |
| unauthorized | 401 | Missing or invalid credentials. Reconnect the integration; do not retry. |
| insufficient_scope | 403 | This credential was not granted the scope this endpoint requires. Reconnect with the required scope; do not retry. |
| subscription_required | 402 | This account has no active subscription. Subscribe at myappstoreranking.com; do not retry. |
| plan_upgrade_required | 403 | Programmatic access (API and AI assistants) is included on the Pro plan and above. Upgrade at myappstoreranking.com/pricing; do not retry. |
| not_found | 404 | No such app, or it is not tracked by this account. Call list_my_apps for the ids available; do not retry with the same id. |
| rate_limited | 429 | Too many requests in a short period. Wait 60 seconds before the next call; do not retry immediately. |
| quota_exceeded | 429 | The account's daily request quota is used up. It resets at 00:00 UTC. Do not retry today. |
| service_unavailable | 503 | Temporarily unavailable. Wait 60 seconds before the next call; do not retry immediately. |
What it can and cannot see
- A connected assistant reads only your own account: the apps you track, their rankings, your competitors and your reports.
- There is no account or user parameter anywhere in this API. Data is scoped to the credential, so one connection can never reach another customer’s data.
- Nothing here can write. No tool adds or removes an app, changes a setting, or touches billing.
- Your email, subscription and payment details are never exposed to a connected assistant.
- Disconnecting from Settings takes effect immediately, for every token that connection has issued.
The full terms are in our privacy policy, which covers what we store about a connection and what happens to the answers once your assistant receives them.