Documentation Index
Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
Use this file to discover all available pages before exploring further.
The Appeeky MCP Server lets AI assistants like Claude, ChatGPT, Cursor, and any MCP-compatible client query App Store intelligence data directly.
MCP Endpoint: https://mcp.appeeky.com
Connect Your Client
Claude Desktop
Claude Code
Cursor
Codex
TypeScript Client
Python Client
Claude Desktop uses OAuth — no API key needed. You’ll sign in with your Appeeky account when prompted.
- Open Claude Desktop and go to Settings → Connectors (or click the button in your Appeeky dashboard).
- Click Add Connector and paste the MCP URL:
- Claude will redirect you to sign in with your Appeeky account (Google, GitHub, or email).
- Once authenticated, the Appeeky MCP tools will be available in your conversations.
You can also add the connector from appeeky.com → Settings → API Key — the “Claude Desktop” button copies the URL and opens the Connectors page for you.
Pass your API key via the Authorization header:claude mcp add --transport http appeeky https://mcp.appeeky.com/mcp \
--header "Authorization: Bearer apk_your_key_here"
Click “Add to Cursor” in your Appeeky dashboard, or manually add to .cursor/mcp.json:{
"mcpServers": {
"appeeky": {
"url": "https://mcp.appeeky.com/mcp",
"headers": {
"Authorization": "Bearer apk_your_key_here"
}
}
}
}
codex mcp add appeeky --transport http https://mcp.appeeky.com/mcp
Then add your API key to ~/.codex/config.toml:[mcp_servers.appeeky.http_headers]
Authorization = "Bearer apk_your_key_here"
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHTTPClientTransport(
new URL("https://mcp.appeeky.com/mcp"),
{
requestInit: {
headers: {
"Authorization": "Bearer apk_your_key_here"
}
}
}
);
const client = new Client({ name: "my-app", version: "1.0.0" });
await client.connect(transport);
const result = await client.callTool({
name: "search_apps",
arguments: { query: "fitness tracker", country: "us" }
});
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async with streamablehttp_client(
"https://mcp.appeeky.com/mcp",
headers={"Authorization": "Bearer apk_your_key_here"}
) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool(
"search_apps",
arguments={"query": "fitness tracker", "country": "us"}
)
print(result)
Claude Desktop uses OAuth (no API key required). All other clients use your API key via Authorization: Bearer header or X-API-Key header. Get your key from appeeky.com → Settings or the API Dashboard.
Apps
| Tool | Description |
|---|
search_apps | Search the App Store by keyword or app name |
get_app | Get detailed metadata for a specific app |
get_app_intelligence | Full intelligence report: downloads, revenue, sentiment |
get_app_similar | Similar and competing apps (3-layer matching) |
get_app_reviews | Fetch user reviews with pagination |
get_country_rankings | App rankings across all countries |
Screenshots
| Tool | Description |
|---|
get_app_screenshots | Get all screenshots for an app, separated by device (iPhone/iPad) |
get_competitor_screenshots | Compare screenshots between an app and its competitors |
get_category_screenshots | Get screenshots for top apps in a category |
Keywords
| Tool | Description |
|---|
get_keyword_ranks | All apps ranking for a keyword with rich metadata (supports countries for multi-storefront) |
get_keyword_suggestions | Keyword ideas from a seed term with volume/difficulty |
get_keyword_metrics | Volume score, difficulty score, competition analysis (supports countries) |
get_app_keywords | All keywords an app ranks for with trends |
get_keyword_trends | Historical rank data over time (7-90 days) |
get_keyword_ranks_history | Historical apps-per-day counts for a tracked keyword (charting SERP crowding) |
compare_keywords | Compare keyword overlap between two apps |
compare_keyword_cluster | Your app + 1–5 competitors: lifecycle buckets + gap keywords |
track_keyword | Add keyword to daily tracking |
get_trending_keywords | Keywords with fastest-growing reach, ranked by growth percentage |
Account
| Tool | Description |
|---|
get_api_usage | Plan, credits used/remaining, reset date, per-endpoint usage (0 credits) |
ASO (App Store Optimization)
| Tool | Description |
|---|
aso_full_audit | Full ASO health audit — score (0-100), 9-factor breakdown, prioritized recommendations |
aso_brief | Audit + opportunities + storefront score; optional countries, intent_clusters (embeddings — see ASO Intent Clusters) |
aso_validate_metadata | Validate title/subtitle/keywords against Apple or Google character limits |
aso_suggest_metadata | Generate optimized metadata suggestions based on target keywords |
aso_find_opportunities | Discover untapped keyword opportunities (high volume + low difficulty) |
aso_competitor_report | Deep ASO comparison between two apps with keyword gap analysis |
Discovery & Featured
| Tool | Description |
|---|
get_featured_apps | App of the Day, Game of the Day, and curated editorial collections |
get_categories | List all App Store categories |
get_category_top | Top apps by category and chart type |
get_downloads_to_top | Estimated downloads to reach chart positions |
get_new_releases | Recently released apps |
discover | Curated discovery feed (new releases + new #1 apps) |
get_new_number_1 | Apps that recently hit #1 in their category |
Market Intelligence
| Tool | Description |
|---|
get_market_movers | Top gainers, losers, new entries, and apps that dropped out of charts |
get_market_activity | Live feed of chart movements: new entries, rank ups/downs, exits |
ASC Metrics (synced Sales & Trends)
| Tool | Description |
|---|
asc_get_metrics | Overview: totals, per-app breakdown, daily rows (2 credits) |
asc_list_metrics_apps | List app IDs with metrics data (2 credits) |
asc_get_app_metrics | App detail: daily series + country breakdown (2 credits) |
asc_subscription_metrics | MRR / ARR / ARPU / churn / trial conversion + daily series (2 credits) |
Pro feature — requires Indie plan or higher. ASC Metrics need your App Store Connect account connected in appeeky.com → Settings → Integrations. Data syncs daily. 2 credits per request.
ASC Reviews (synced + write-through)
| Tool | Description |
|---|
asc_search_reviews | Search reviews with rich filters: rating, territory, hasResponse, full-text |
asc_reviews_summary | Aggregated stats: total, avg rating, distribution, response rate, by-territory |
asc_respond_to_review | Post or update a developer response (handles Apple’s edit-by-DELETE flow) |
asc_delete_review_response | Delete a developer response |
asc_refresh_review | Force-refresh one review from Apple (e.g. after replying) |
Pro feature — requires Indie plan or higher. Reviews data syncs daily; mutations write through to Apple immediately.
App Store Connect (requires your ASC credentials)
| Tool | Description |
|---|
asc_list_apps | List apps in your App Store Connect account |
asc_get_app | Get app details by App Store Connect app ID |
asc_list_app_versions | List versions for an app |
asc_create_app_version | Create a new app version (version string + platform) |
asc_update_app_version | Patch attributes on an app version |
asc_list_app_infos | List app info resources for an app |
asc_list_app_info_localizations | List app info localizations (name, subtitle, privacy) |
asc_update_app_info_localization | Update app info localization fields |
asc_list_version_localizations | List metadata localizations for a version |
asc_get_version_localization | Get one version localization by ID |
asc_update_localization | Update description, keywords, whatsNew, etc. |
asc_list_customer_reviews | List customer reviews live from Apple (legacy — prefer asc_search_reviews for filtering) |
asc_list_app_analytics_requests | List analytics report requests |
asc_create_analytics_request | Create analytics report request |
asc_list_reports_for_request | List reports for a request |
asc_list_analytics_report_instances | List instances for an analytics report |
asc_list_analytics_report_segments | List segments for a report instance |
asc_get_analytics_report_segment | Get one segment (download metadata) |
AI Visibility (LLM mind-share tracking)
How often your app is recommended by AI assistants — ChatGPT, Claude, Gemini, and Perplexity — for the intents users actually search for, partitioned per country and per model.
| Tool | Description |
|---|
ai_visibility_overview | Composite score, sentiment, intent coverage, and prior-period delta |
ai_visibility_intents | All tracked intents with per-intent visibility, sentiment, and average position |
ai_visibility_intent_detail | One intent + its prompts + the latest AI answers per prompt |
ai_visibility_competitors | Apps that AI recommends instead of (or alongside) yours over the last N days |
ai_visibility_trend | Daily time series — app-level or scoped to a single intent |
ai_visibility_answer | Verbatim raw model output, extracted app mentions in rank order, citations |
ai_visibility_settings_get | Current config + tier policy + AI Visibility credit budget |
ai_visibility_settings_update | Toggle enabled/models/cadence (tier-capped, 0 credits) |
ai_visibility_intent_create / _update / _archive | Manually manage tracked intents (0 credits) |
ai_visibility_prompt_create / _update / _archive | Manually manage prompts under an intent (0 credits) |
ai_visibility_bootstrap | Auto-generate intents+prompts from App Store metadata, then run an initial scan |
ai_visibility_scan | Run an on-demand scan across every active prompt × enabled model (dynamic credits) |
Indie plan or higher. AI Visibility uses a separate credit pool from API credits — see AI Visibility Overview. Bootstrap and Scan are fire-and-forget queued tasks; they return a taskRunId immediately and write results back as scans finish.
RevenueCat (your credentials: X-RC-Key / X-RC-Project)
| Tool | Description |
|---|
rc_overview | Snapshot: MRR, actives, trials, revenue, etc. |
rc_chart_options | Valid filters (countries, products, …) for a chart name |
rc_revenue, rc_mrr, rc_active_subscriptions, rc_churn | Common chart shortcuts |
rc_chart | Generic chart by name |
Example Prompts
Once connected, ask your AI assistant in natural language:
Market research:
Show me the top 10 apps for "meditation" and analyze
their ratings and review counts.
Keyword intelligence:
Find keyword suggestions for "screen recorder" and
tell me which ones have high volume but low difficulty.
Competitor analysis:
Compare keyword overlap between Headspace (id: 493145008)
and Calm (id: 571800810). What keywords is Calm ranking
for that Headspace is missing?
App intelligence:
Give me the full intelligence report for Duolingo.
How many downloads does it get? What's the revenue estimate?
Featured apps:
What apps are featured on the App Store today?
What's the App of the Day and Game of the Day?
Trending keywords:
What keywords are trending on the App Store this week?
Show me keywords with the highest growth in the US.
Downloads to top:
How many downloads does it take to reach the top 10
in the Games category? Show me the current apps at each rank.
New releases:
What new apps were released in the last 3 days?
Are any of them in the Games category?
ASO audit:
Run a full ASO audit on Duolingo (id: 570060128).
What's its score and what should they improve?
ASO decision brief (orchestration):
Give me an ASO decision brief for Brilliant (id: 913335252) in the US.
Summarize prioritized actions and top keyword opportunities.
ASO metadata optimization:
I want to optimize my app (id: 913335252) for the keywords
"learn math", "science education", and "brain training".
Suggest optimized metadata for Apple and Google.
ASC Metrics (synced Sales & Trends):
What's my app's revenue and downloads for the last 30 days?
Use asc_get_metrics or asc_get_app_metrics.
Keyword opportunities:
Find keyword opportunities for Headspace (id: 493145008).
Which keywords should they target next?
Market movers:
Which apps gained the most ranks in the top-free chart today?
Show me the top gainers and any new entries in Games.
Market activity:
What's happening in the App Store right now?
Show me the latest chart activity for the US free apps chart.
ASO competitor analysis:
Run a full ASO competitor report comparing Brilliant (id: 913335252)
vs Khan Academy (id: 1157115554). Where is Brilliant falling behind?
App Store Connect reviews (synced + write-through):
Find every unanswered 1- or 2-star review for app 6759740679 from the last
two weeks that mentions "crash" or "bug", and reply with an empathetic
message that points to support@example.com. Then show me the updated
unanswered count.
Subscription health (MRR / Churn):
Pull subscription metrics for the last 90 days. Tell me whether MRR
growth is being driven by new subscribers, lower churn, or higher
trial conversion — and which app contributes most to MRR.
AI Visibility — how often does AI recommend my app?
For app 6759740679 in the US, give me my AI Visibility on ChatGPT:
overall score, the 3 lowest-visibility intents, and the top 5 apps
ChatGPT recommends instead of mine.
AI Visibility — see exactly what the model said:
For app 6759740679, find the worst-performing intent on ChatGPT,
pick its top prompt, and show me the verbatim ChatGPT response
(including which competitor apps it ranked above mine).
AI Visibility — track a new intent manually:
Add a new AI Visibility intent for app 6759740679 in the US:
"Find a privacy-respecting note-taking app for students".
Then add 3 prompts a real user would type for it (mix of
unbranded and comparison styles), and run a scan.
search_apps
Search the App Store by keyword or numeric App ID.
| Parameter | Type | Default | Description |
|---|
query | string | required | Search keyword or App ID |
country | string | us | ISO country code |
limit | number | 20 | Max results (1-50) |
get_app
Get metadata for a specific app.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID (numeric) |
country | string | us | ISO country code |
get_app_intelligence
Full intelligence report with downloads, revenue, and sentiment.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
country | string | us | ISO country code |
get_app_similar
Similar and competing apps via 3-layer matching (keyword overlap, title search, same developer).
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
country | string | us | ISO country code |
get_keyword_ranks
All apps ranking for a keyword with metadata (rating, reviews, category, price).
| Parameter | Type | Default | Description |
|---|
keyword | string | required | Keyword to search |
country | string | us | ISO country code |
device | string | iphone | iphone or ipad |
get_keyword_suggestions
Keyword ideas from a seed term with optional volume/difficulty metrics.
| Parameter | Type | Default | Description |
|---|
term | string | required | Seed term |
country | string | us | ISO country code |
expand | boolean | false | Long-tail expansion |
metrics | boolean | true | Include volume/difficulty |
get_keyword_metrics
Detailed metrics for a keyword.
| Parameter | Type | Default | Description |
|---|
keyword | string | required | Keyword to analyze |
country | string | us | ISO country code |
get_app_keywords
All keywords an app ranks for with trend data.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
country | string | us | ISO country code |
get_keyword_trends
Historical rank data for a keyword + app pair.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
keyword | string | required | Keyword to track |
country | string | us | ISO country code |
days | number | 30 | History length (7-90) |
compare_keywords
Compare keyword rankings between two apps.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Your app’s ID |
competitor_id | string | required | Competitor’s ID |
country | string | us | ISO country code |
compare_keyword_cluster
Multi-competitor keyword lifecycle (your app + 1–5 competitors).
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Your app’s Apple App ID |
competitors | string | required | Comma-separated competitor app IDs (1–5) |
country | string | us | ISO country code |
get_keyword_ranks_history
Historical apps-per-day counts for a tracked keyword.
| Parameter | Type | Default | Description |
|---|
keyword | string | required | Keyword |
country | string | us | ISO country code |
device | string | iphone | iphone or ipad |
days | number | 14 | Lookback (1–90) |
get_api_usage
Current billing period usage (0 credits).
| Parameter | Type | Default | Description |
|---|
| (none) | — | — | — |
get_category_top
Top apps in a specific category or all categories.
| Parameter | Type | Default | Description |
|---|
genre_id | string | all | Genre ID (e.g. 6014 for Games) |
country | string | us | ISO country code |
chart | string | top-free | top-free, top-paid, or top-grossing |
limit | number | 25 | Max results (1-100) |
get_downloads_to_top
Estimated daily downloads needed to reach specific chart positions (#1, #5, #10, #25, #50, #100).
| Parameter | Type | Default | Description |
|---|
genre_id | string | all | Genre ID (e.g. 6014 for Games) |
country | string | us | ISO country code |
chart | string | top-free | top-free, top-paid, or top-grossing |
get_trending_keywords
Keywords with the fastest-growing reach in the App Store.
| Parameter | Type | Default | Description |
|---|
country | string | us | ISO country code |
days | number | 7 | Trend window in days (1-30) |
limit | number | 50 | Max keywords to return (1-100) |
get_featured_apps
Apps currently featured on the App Store Today tab.
| Parameter | Type | Default | Description |
|---|
country | string | us | ISO country code |
get_new_releases
Recently released apps.
| Parameter | Type | Default | Description |
|---|
country | string | us | ISO country code |
max_days | number | 7 | Show releases from last N days |
aso_full_audit
Full ASO health audit with scoring, breakdown, and recommendations.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
country | string | us | ISO country code |
Validate metadata against Apple or Google character limits.
| Parameter | Type | Default | Description |
|---|
platform | string | required | apple or google |
title | string | optional | App title |
subtitle | string | optional | Apple subtitle |
keywords | string | optional | Apple keyword field (comma-separated) |
short_description | string | optional | Google short description |
full_description | string | optional | Google full description |
Generate optimized metadata from target keywords.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
keywords | string[] | required | Target keywords array |
country | string | us | ISO country code |
aso_find_opportunities
Discover untapped keyword opportunities.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
country | string | us | ISO country code |
aso_brief
Orchestrated ASO brief: audit + opportunities, storefront readiness score, optional intent clusters, optional multi-country.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
country | string | us | ISO country code (ignored if countries set) |
countries | string | optional | Comma-separated ISO codes for per-country briefs |
fresh | boolean | false | Force fresh re-analysis (slower) |
intent_clusters | boolean | false | Semantic intent clustering (+2 credits) |
aso_competitor_report
Deep ASO comparison between two apps.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Your app’s ID |
competitor_id | string | required | Competitor’s ID |
country | string | us | ISO country code |
get_app_screenshots
Get all screenshots for an app, separated by device type (iPhone and iPad).
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID (numeric) |
country | string | us | ISO country code |
device | string | all | Device filter: iphone, ipad, or all |
get_competitor_screenshots
Compare screenshots between an app and its competitors.
| Parameter | Type | Default | Description |
|---|
app_id | string | required | Apple App ID |
country | string | us | ISO country code |
limit | number | 5 | Number of competitor apps to include (1-10) |
get_category_screenshots
Get screenshots for top-ranked apps in an App Store category.
| Parameter | Type | Default | Description |
|---|
genre_id | string | all | Genre ID (e.g. 6014 for Games, or all) |
country | string | us | ISO country code |
chart | string | top-free | top-free, top-paid, or top-grossing |
limit | number | 10 | Number of apps (1-25) |
asc_list_customer_reviews
List customer reviews for your app from App Store Connect. Requires ASC credentials.
| Parameter | Type | Default | Description |
|---|
issuer_id | string | required | App Store Connect Issuer ID |
key_id | string | required | App Store Connect Key ID |
private_key | string | required | App Store Connect private key (PEM) |
app_id | string | required | App Store Connect app ID |
limit | number | 50 | Max results per page (1-200) |
cursor | string | optional | Pagination cursor from previous response |
asc_respond_to_review
Create or update your response to a single customer review. Transparently handles Apple’s edit-by-DELETE-then-POST flow — you always make a single tool call.
| Parameter | Type | Default | Description |
|---|
issuer_id | string | optional | App Store Connect Issuer ID (omit if ASC connected on your Appeeky account) |
key_id | string | optional | App Store Connect Key ID |
private_key | string | optional | App Store Connect private key (PEM) |
review_id | string | required | Customer review ID (from asc_search_reviews or asc_list_customer_reviews) |
response_body | string | required | Your response text (max 5970 chars — Apple’s hard limit) |
asc_search_reviews
Search persisted customer reviews with rich filters. Reads from a synced copy of your App Store Connect reviews — much faster than asc_list_customer_reviews and supports filtering Apple’s API does not.
| Parameter | Type | Default | Description |
|---|
app_id | string | optional | App Store Connect app ID — omit to search across all your connected apps |
rating | number | optional | Filter by exact star rating (1–5) |
territory | string | optional | ISO 3-letter country code (e.g. USA, GBR, DEU) |
has_response | boolean | optional | true for answered, false for unanswered, omit for both |
q | string | optional | Case-insensitive substring match in title or body |
limit | number | 50 | Max results (1–200) |
before | string | optional | ISO timestamp cursor — returns reviews created strictly before this date |
asc_reviews_summary
Aggregated review stats: total count, average rating, star distribution, response rate, top territories.
| Parameter | Type | Default | Description |
|---|
app_id | string | optional | Filter by app — omit for portfolio-wide summary |
asc_delete_review_response
Delete your developer response to a review (idempotent — calling on a review with no response succeeds with response: null).
| Parameter | Type | Default | Description |
|---|
issuer_id | string | optional | ASC Issuer ID (omit if connected on Appeeky) |
key_id | string | optional | ASC Key ID |
private_key | string | optional | ASC private key (PEM) |
review_id | string | required | Customer review ID whose response should be deleted |
asc_refresh_review
Force-refresh a single review from Apple, bypassing the daily sync. Useful right after responding to confirm the PUBLISHED state.
| Parameter | Type | Default | Description |
|---|
issuer_id | string | optional | ASC Issuer ID (omit if connected on Appeeky) |
key_id | string | optional | ASC Key ID |
private_key | string | optional | ASC private key (PEM) |
review_id | string | required | Customer review ID to refresh |
asc_subscription_metrics
SaaS-grade subscription health: MRR, ARR, ARPU, churn rate, trial conversion rate, plus daily event counts (new, canceled, refunded, reactivated, trial starts/conversions, expired). Computed from Apple’s SUBSCRIPTION + SUBSCRIPTION_EVENT reports, FX-converted to USD using historical rates.
| Parameter | Type | Default | Description |
|---|
app_id | string | optional | App Store Connect app ID — omit to roll up across all your apps |
start_date | string | 30 days ago | ISO date YYYY-MM-DD |
end_date | string | today | ISO date YYYY-MM-DD |
Manage your appeeky.com apps, competitors, tracked keywords, metadata versions, and reports directly from your AI assistant. All tools cost 0 credits and require an API key generated from appeeky.com → Settings → API Key.
These tools operate on your appeeky.com account data — the same data visible in the web dashboard. The key must have the apps:read scope for reads and apps:write for writes (unrestricted keys have both by default).
list_my_apps
List all apps in your appeeky.com tracked app list.
| Parameter | Type | Default | Description |
|---|
| (none) | — | — | Returns all your tracked apps |
add_my_app
Add an app to your tracked list by its App Store ID.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Numeric Apple App Store ID |
appName | string | optional | Display name |
developerName | string | optional | Developer name |
bundleId | string | optional | Bundle identifier |
subtitle | string | optional | App subtitle |
description | string | optional | App description |
languages | string[] | optional | Supported language codes |
isLive | boolean | optional | Whether the app is live on the App Store |
category | string | optional | App category |
platform | string | ios | ios, macos, or tvos |
update_my_app
Update metadata for an existing app in your tracked list.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Numeric App Store ID of the app to update |
appName | string | optional | New display name |
isLive | boolean | optional | Live status |
category | string | optional | App category |
subtitle | string | optional | App subtitle |
description | string | optional | App description |
languages | string[] | optional | Supported language codes |
delete_my_app
Remove an app from your tracked list.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Numeric App Store ID of the app to remove |
list_competitors
List competitor apps tracked for one of your apps.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Numeric App Store ID of your tracked app |
add_competitor
Add a competitor app to one of your tracked apps.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Your tracked app’s App Store ID |
competitorAppId | number | required | Competitor’s App Store ID |
competitorName | string | optional | Display name for the competitor |
remove_competitor
Remove a competitor from one of your tracked apps.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Your tracked app’s App Store ID |
competitorAppId | number | required | Competitor’s App Store ID to remove |
list_tracked_keywords
List keywords tracked for one of your apps.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Numeric App Store ID of your tracked app |
add_tracked_keyword
Start tracking a keyword for one of your apps.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Your tracked app’s App Store ID |
keyword | string | required | Keyword to track (e.g. "aso tool") |
country | string | us | ISO country code |
language | string | en | ISO language code |
remove_tracked_keyword
Stop tracking a keyword.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Your tracked app’s App Store ID |
keywordId | string | required | UUID of the tracked keyword row (from list_tracked_keywords) |
list_app_versions
List saved metadata versions for one of your apps.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Numeric App Store ID of your tracked app |
create_app_version
Save a new set of ASO metadata as a named version.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Your tracked app’s App Store ID |
versionName | string | required | Label for this version (e.g. "v2.1 Spring") |
title | string | optional | App title (max 30 chars) |
subtitle | string | optional | App subtitle (max 30 chars) |
description | string | optional | Full app description |
keywords | string | optional | Comma-separated keyword field |
language | string | en-US | Locale code |
update_app_version
Update fields on an existing metadata version.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Your tracked app’s App Store ID |
versionId | string | required | UUID of the version to update |
versionName | string | optional | New label |
title | string | optional | Updated title |
subtitle | string | optional | Updated subtitle |
description | string | optional | Updated description |
keywords | string | optional | Updated keyword field |
release_app_version
Mark a metadata version as the currently released version.
| Parameter | Type | Default | Description |
|---|
appId | number | required | Your tracked app’s App Store ID |
versionId | string | required | UUID of the version to mark as released |
list_reports
List saved ASO reports for your account.
| Parameter | Type | Default | Description |
|---|
appId | number | optional | Filter by a specific App Store ID |
type | string | optional | Filter by report type (e.g. aso_audit, competitor) |
limit | number | 20 | Max results (max 100) |
offset | number | 0 | Pagination offset |
get_report
Retrieve the full content of a saved report.
| Parameter | Type | Default | Description |
|---|
reportId | string | required | UUID of the report |
delete_report
Permanently delete a saved report.
| Parameter | Type | Default | Description |
|---|
reportId | string | required | UUID of the report to delete |
Track how often LLM assistants (ChatGPT, Claude, Gemini, Perplexity) recommend your app for the intents your users actually search for. Data is partitioned per (app, country, model) because the same prompt yields very different answers in different markets.
Indie plan or higher. AI Visibility uses a separate credit pool from API credits. Read tools cost AI Visibility credits per call (cheap), _scan and _bootstrap cost dynamically based on prompt count × enabled models. See AI Visibility Overview for the credit model.
ai_visibility_overview
Top-line scorecard for one model: composite score (0-100), letter grade, sentiment %, intent coverage, and prior-period delta.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric Apple App Store ID |
country | string | us | ISO country code |
model | string | chatgpt | One of chatgpt, claude, gemini, perplexity |
ai_visibility_intents
List every tracked intent with its visibility, sentiment, average position, and top competitor apps.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
country | string | us | ISO country code |
model | string | chatgpt | One of chatgpt, claude, gemini, perplexity |
ai_visibility_intent_detail
Drill into one intent: returns its metrics plus all of its prompts and the latest AI answers per prompt. Use when you want to inspect “why is this intent under-performing?”.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
intent_id | string | required | Intent UUID (from ai_visibility_intents) |
country | string | us | ISO country code |
model | string | chatgpt | AI model |
ai_visibility_competitors
Apps that the model recommended instead of (or alongside) yours, ranked by appearances in the last N days.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
country | string | us | ISO country code |
model | string | chatgpt | AI model |
window_days | number | 14 | Lookback in days (1–90) |
ai_visibility_trend
Daily time series for one model — app-level by default, or scoped to a single intent when intent_id is set.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
country | string | us | ISO country code |
model | string | chatgpt | AI model |
window_days | number | 30 | Trend window in days (1–90) |
intent_id | string | optional | Scope the series to one intent |
ai_visibility_answer
Fetch the verbatim raw model output for a single prompt, plus extracted app mentions in rank order, sentiment, and citations. The proof layer behind every visibility number.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
answer_id | string | required | Answer UUID (from ai_visibility_intent_detail.prompts[].latestAnswers) |
ai_visibility_settings_get
Per-app config for one country: enabled state, models, scan cadence, last bootstrap/scan timestamps, your tier policy, and your AI Visibility credit budget.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
country | string | us | ISO country code |
ai_visibility_settings_update
Toggle AI Visibility, change which models are scanned, or adjust scan cadence. Tier-capped: number of models cannot exceed tier.maxModels. Costs 0 credits.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
country | string | us | ISO country code |
enabled | boolean | optional | Enable/disable scheduled scans |
models | string[] | optional | Subset of chatgpt, claude, gemini, perplexity |
scan_cadence_days | number | optional | Cadence in days (0–30; 0 pauses scheduled scans) |
language | string | optional | ISO language code (e.g. en, tr, de) |
ai_visibility_intent_create
Manually add a user-intent to track. Source is recorded as user, so it sits alongside LLM-generated intents and is included in every scan. Costs 0 credits.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
country | string | us | ISO country code |
language | string | en | ISO language code |
label | string | required | User-facing intent label (≥8 chars), phrased from the user’s POV |
description | string | optional | One-sentence “who has this intent and what they want” |
ai_visibility_intent_update
Rename, edit description, or change status (active / paused / archived). Pausing keeps history but stops including the intent in scheduled scans. Costs 0 credits.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
intent_id | string | required | Intent UUID |
label | string | optional | New label |
description | string | optional | New description |
status | string | optional | active, paused, or archived |
ai_visibility_intent_archive
Archive an intent (soft-delete). The intent and its prompts stop being scanned, but historical scores stay in ai_visibility_trend. Costs 0 credits.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
intent_id | string | required | Intent UUID to archive |
ai_visibility_prompt_create
Add a manual prompt under an intent. Each prompt is sent verbatim to every enabled AI assistant on the next scan. Costs 0 credits.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
intent_id | string | required | Parent intent UUID |
country | string | us | ISO country code |
language | string | en | ISO language code |
text | string | required | Prompt text (≥15 chars), in the user’s voice |
style | string | unbranded | branded, unbranded, problem, use_case, or comparison |
ai_visibility_prompt_update
Edit prompt text, style, or status (active / paused / archived). Pausing keeps history but excludes the prompt from upcoming scans. Costs 0 credits.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
prompt_id | string | required | Prompt UUID |
text | string | optional | New prompt text |
style | string | optional | branded, unbranded, problem, use_case, or comparison |
status | string | optional | active, paused, or archived |
ai_visibility_prompt_archive
Archive a prompt (soft-delete). Historical answers remain queryable via ai_visibility_answer. Costs 0 credits.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
prompt_id | string | required | Prompt UUID to archive |
ai_visibility_bootstrap
Fire-and-forget Trigger.dev task that auto-generates intents and prompts for an app from its App Store metadata, then kicks off an initial scan. Run this once per (app, country) when first enabling AI Visibility. Returns a taskRunId you can poll later. Hard-fails on tier-block or zero AI Visibility credits.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
country | string | us | ISO country code |
language | string | en | ISO language code |
ai_visibility_scan
Fire-and-forget scan: queries every active prompt against every enabled model and updates the app’s metrics. Returns taskRunId, promptsTotal, models[], and estimatedCost (AI Visibility credits). Hard-fails when projected cost exceeds remaining quota — call ai_visibility_settings_get first to check budget.
| Parameter | Type | Default | Description |
|---|
app_id | number | required | Numeric App Store ID |
country | string | us | ISO country code |