使用说明
AppKittie — mobile app intelligence for AI agents
Full API documentation: www.appkittie.com/docs
Turn Cursor, Claude Code, Manus, or any Agent Skills–compatible assistant into a research partner for the App Store and Google Play: discovery, ASO, competitors, growth, revenue, and ads—backed by live data from the AppKittie API (2M+ mobile apps, estimates, growth windows, and ad signals).
Install the skills
Today’s coding agents load Agent Skills from disk: each skill is a folder with a SKILL.md (and optional files), placed where your tool looks—commonly .cursor/skills/, .claude/skills/, .agents/skills/, or .codex/skills/. You either copy those folders, subscribe to a remote rule (Cursor), or use a CLI that fetches from GitHub (Claude Code).
Claude Code — official installer; downloads this repo and registers the skills:
npx skills add appkittie/mcp
Install only specific skills:
npx skills add appkittie/mcp --skill keyword-research competitor-analysis
If you already cloned the repo: cp -r mcp/skills/* .claude/skills/
Cursor — Settings (⌘⇧J) → Rules → Add Rule → Remote Rule (GitHub) → https://github.com/appkittie/mcp, or copy skills locally:
| Where | Command |
|---|---|
| Project | cp -r mcp/skills/* .cursor/skills/ |
| User (all projects) | cp -r mcp/skills/* ~/.cursor/skills/ |
Manus — Skills → Create / Import → Import from public GitHub repository → https://github.com/appkittie/mcp.
Manus expects a SKILL.md at the repository root, so this repo includes a root SKILL.md wrapper that routes to the focused workflow docs under skills/.
Any other agent — clone and point skills/ at the path your client documents:
git clone https://github.com/appkittie/mcp.git
cp -r mcp/skills/* .cursor/skills/ # or .claude/skills/, .agents/skills/, .codex/skills/
Install the MCP server
Skills describe how to reason about mobile app store work; MCP exposes live tools (search_apps, keyword endpoints, etc.) against AppKittie. Create an API key at appkittie.com/settings/api-keys (it is only shown once when created).
Claude Code — register the hosted server (HTTP transport + bearer auth):
claude mcp add appkittie --transport http https://mcp.appkittie.com/mcp --header "Authorization: Bearer YOUR_API_KEY"
Substitute your real key for YOUR_API_KEY.
Claude Web / Claude Desktop custom connector — if your connector UI supports request headers, use Authorization: Bearer YOUR_API_KEY. If it only exposes OAuth fields, use the hosted OAuth proxy shim:
Connector URL: https://mcp.appkittie.com/mcp
Auth type: OAuth
Client ID: appkittie-claude
Client Secret: YOUR_API_KEY
The OAuth consent screen is just a Claude-compatible API-key handoff. AppKittie does not require a separate OAuth account flow.
Cursor and other MCP clients — use the same URL and Authorization: Bearer … header in your app’s MCP configuration. Example JSON: Wire up the MCP server below.
UPDATE
MCP server updates and skill updates are separate:
MCP server
If you use the hosted MCP server at https://mcp.appkittie.com, there is nothing to reinstall. AppKittie deploys server updates, and your existing MCP configuration keeps working.
If new tools or prompts do not appear immediately, restart your agent or reconnect the AppKittie MCP server so the client refreshes its tool list.
Skills
If you installed with the skills CLI, update the local skill files:
npx skills update
If you copied the folders manually, pull the latest repo and copy them again:
git pull
cp -r mcp/skills/* .claude/skills/ # or .cursor/skills/, .agents/skills/, .codex/skills/
Cursor remote GitHub rules and Manus GitHub imports are managed by those clients. If an update does not appear, refresh/re-import the GitHub rule or restart the client.
What you get
| Piece | Role |
|---|---|
| Skills | Opinionated playbooks under skills/—how to ask questions, structure answers, and chain workflows |
| MCP server | Hosted proxy (mcp.appkittie.com) so MCP clients can call AppKittie without wiring HTTP yourself |
| REST API | Direct GET/POST to https://appkittie.com/api/v1 for scripts, backends, or custom tools |
Skills compose: e.g. competitor-analysis may point you to keyword-research, then metadata-optimization for execution.
Wire up the MCP server
The worker on Cloudflare forwards requests to AppKittie. Claude Code users can register via claude mcp add above; everyone else (e.g. Cursor) typically pastes config like this:
- Create a key: appkittie.com/settings/api-keys (shown once—copy immediately).
- Register the server:
{
"mcpServers": {
"appkittie": {
"url": "https://mcp.appkittie.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
MCP tools
| Tool | Purpose | Credits |
|---|---|---|
search_apps |
Filter App Store and Google Play apps (30+ parameters) | 1 × rows returned |
list_favorite_apps |
List the API team's owner's saved apps and folders | Free |
get_app_detail |
Metadata, revenue, IAPs, contacts, growth summaries | 1 / call |
get_app_historicals |
Raw historical metric series for one app | 1 / call |
list_store_rankings |
Current store chart by collection, country, and category | 1 × rows returned |
get_store_ranking_history |
Daily chart positions for one app and chart | 10 / call |
search_ads |
Search Meta and TikTok ad creatives; compact view by default, view='full' for complete payloads |
1 × rows returned |
get_ad_detail |
Full detail for one ad creative | 1 / call |
list_creators |
Creator discovery for one app or across a category; filter by platform, country, and followers | 1 × rows returned |
list_organic_content |
Search organic creator content globally or filter by app, category, language, reach, views, and app performance | 1 × rows returned |
get_keyword_difficulty |
One keyword: popularity, difficulty, traffic, top apps (topAppsLimit, default 10) |
10 / call |
batch_keyword_difficulty |
Up to 10 keywords, ranked by opportunity | 10 × keyword |
get_app_reviews |
Real-time store reviews for one app | 1 × rows returned |
get_supported_countries |
Valid storefront codes | Free |
App identifiers: every app-scoped tool (get_app_detail, get_app_historicals, search_ads, list_creators, list_organic_content, get_app_reviews) accepts an app slug, AppKittie app ID, numeric App Store ID, Google Play package name, or store URL. Resolution happens automatically — pass whichever identifier you have.
Influencer discovery: list_creators supports category for cross-app discovery, platform / country / minFollowers / maxFollowers filters, and sortBy='followers'. To confirm a creator actually posted about an app, cross-reference their handle against list_organic_content for that app.
MCP prompts
| Prompt | Use case |
|---|---|
discover_niche |
Walk through profitable niches inside a category |
competitor_analysis |
Structured competitive intel |
keyword_research |
Prioritize and document a keyword set |
app_growth_report |
Gainers, losers, trend read |
ad_intelligence |
Category or niche ad landscape |
review_analysis |
Mine app reviews for sentiment, complaints, and feature requests |
Skill catalog
Intelligence & positioning
| Skill | Link | Summary |
|---|---|---|
| App discovery | app-discovery | Slice the catalog by category, money, traction, ratings, ads, and more |
| Keyword research | keyword-research | Popularity, difficulty, traffic score, leaders—turn into a ranked plan |
| Metadata | metadata-optimization | Title, subtitle, keyword field, description with variants and limits |
| Competitors | competitor-analysis | Gaps, revenue contrast, ad teardown, positioning |
Growth, money, ads
| Skill | Link | Summary |
|---|---|---|
| Growth | growth-analysis | Fast movers, drivers, emerging patterns |
| Revenue | revenue-analysis | Benchmarks, monetization, IAP shape, pricing |
| Ads | ad-intelligence | Meta/Google creatives, Apple Search Ads signals, UA angles |
| Creators | creator-discovery | Influencer discovery per app or category — follower tiers, platforms, outreach lists |
Shared context
| Skill | Link | Summary |
|---|---|---|
| Marketing context | app-marketing-context | One doc: app, audience, rivals, goals—feeds the other skills |
| Reviews | review-analysis | Turn app reviews into sentiment, complaints, requests, and product moves |
Example prompts & commands
Natural language (after skills are installed):
- “Surface the highest-earning Health & Fitness apps.”
- “US keyword set for a meditation app—prioritize by opportunity.”
- “Competitive read for app id
1234567890.” - “Who’s buying Meta ads in productivity lately?”
- “Find TikTok micro-influencers associated with calorie-tracking apps.”
- “What’s climbing fastest this week?”
- “Rewrite title + subtitle for these keywords, three options each.”
- “Capture my marketing context so follow-ups stay consistent.”
- “Rough revenue band for education—who owns the top?”
Slash-style entry points in clients that install the focused folders directly: /app-discovery, /keyword-research, /metadata-optimization, /competitor-analysis, /growth-analysis, /ad-intelligence, /creator-discovery, /revenue-analysis, /review-analysis.
In clients that import the GitHub repo as one skill, such as Manus, use /appkittie and describe the workflow you want.
How an agent typically runs
- Loads the relevant
SKILL.md(templates, guardrails, output shape). - Calls AppKittie—via MCP tools or HTTP—e.g.
search_appswith category +sortBy: revenue, orbatch_keyword_difficultyfor a seed list, thenget_keyword_difficultyon shortlist items. - Synthesizes: tables, takeaways, and next actions instead of raw JSON dumps.
REST API quick reference
Base: https://appkittie.com/api/v1
Auth: Authorization: Bearer <key> — same keys as the dashboard.
curl -sS "https://appkittie.com/api/v1/apps?search=fitness&limit=5" \
-H "Authorization: Bearer YOUR_API_KEY"
Routes & billing
| Route | Verb | Role | Credits |
|---|---|---|---|
/api/v1/apps |
GET | Search / filter apps | 1 per app in the payload |
/api/v1/apps/:appId |
GET | Full detail for one app | 1 per request |
/api/v1/apps/:appId/historicals |
GET | Historical metric time series | 1 per request |
/api/v1/ads |
GET | Search / filter ad creatives (view=compact for trimmed payloads) |
1 per ad in the payload |
/api/v1/ads/:adId |
GET | Full detail for one ad creative | 1 per request |
/api/v1/creators |
GET | Creator discovery for one app or a category, with filters and match quality | 1 per creator in the payload |
/api/v1/organic |
GET | Organic creator videos for one app or a category | 1 per item in the payload |
/api/v1/keywords/difficulty |
GET | Single keyword (topAppsLimit / includeTopApps=false for compact payloads) |
10 per request |
/api/v1/keywords/difficulty |
POST | Batch (≤10 keywords) | 10 per keyword with data |
/api/v1/reviews |
GET / POST | Real-time store reviews (any identifier form) | 1 per review in the payload |
Payload shape
Success bodies use a top-level data. Lists add cursor pagination:
{
"data": [{ "title": "Calm", "score": 4.8, "downloads": 85000 }],
"pagination": { "nextCursor": 50, "totalCount": 12450 }
}
Request the next page with cursor=<nextCursor>. null means end of results.
App-scoped routes accept any identifier form — app_slug/appSlug, appId, appStoreId (numeric App Store ID or Google Play package name), or appStoreUrl — and resolve it server-side.
GET /api/v1/apps filters (AND-combined)
| Group | Parameters |
|---|---|
| Text | search — title, developer, description |
| Categories | categories, excludedCategories (comma-separated names) |
| Store | source, excludedSource (apple_mobile | google_mobile) |
| Metrics | minDownloads / maxDownloads, minRevenue / maxRevenue, minRating / maxRating, minReviews / maxReviews, lifetime download/revenue min/max |
| Price | priceType (all | free | paid), minPrice, maxPrice |
| Growth sort | sortBy=growth, growthMetric=reviews, growthPeriod (7d, 14d, 30d, 60d, 90d). Growth direction/range filters are temporarily unavailable |
| Signals | hasMetaAds, hasTikTokAds, hasAppleAds, hasCreators, hasEmails, hasWebsite |
| Content | contentRating, languages, developer |
| Time | releasedAfter, updatedAfter (Unix seconds) |
| Order | sortBy (growth, rating, reviews, updated, released, downloads, revenue, trending, newest), sortOrder (asc | desc) |
hasTikTokAds=true requires tiktok_ads_total_count > 0; false includes zero, missing, or null counts. App list/detail responses include optional tiktok_ads_total_count when available. Fetch creatives separately with search_ads(adSource="tiktok", appSlug=...); counts can differ from indexed creatives.
adsSource accepts meta (Apple apps with Meta creatives), tiktok (either store with a positive TikTok count), or all (either group). Omit it to include apps without ads. Other filters are AND-combined.
Full parameter matrix: tools/REGISTRY.md.
GET /api/v1/ads filters
| Group | Parameters |
|---|---|
| Text | search, textSearchFields |
| Creative | adSource (all | meta | tiktok | google (legacy)), mediaType (all | image | video), status (all | active | inactive) |
| App | app_slug/appSlug/appId/appStoreId/appStoreUrl (any identifier form), categories, excludedCategories, developer, app download/revenue min/max |
| Delivery | countries, excludedCountries, surfaces, excludedSurfaces, start/end timestamp bounds |
| Shape | view (full | compact) |
| Order | sortBy (start_date, end_date, app_downloads, app_revenue, app Meta Ads estimated spend/reach fields for 7d, 30d, or 90d, app_released_timestamp, app_updated_timestamp), sortOrder (asc | desc) |
adSource=all adds no network filter. Google remains accepted for compatibility but has no current inventory. ad_source identifies the creative network independently of the app store.
GET /api/v1/creators filters
| Group | Parameters |
|---|---|
| Scope | any app identifier, or category for cross-app discovery |
| Creator | platform (tiktok | instagram | youtube), country, minFollowers / maxFollowers |
| Order | sortBy (relevance | followers), sortOrder (asc | desc) |
GET /api/v1/organic supports the same scope parameters plus platform.
cURL samples
High-revenue fitness slice:
curl -sS "https://appkittie.com/api/v1/apps?search=fitness&categories=Health+%26+Fitness&minRevenue=10000&sortBy=revenue&sortOrder=desc&limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
Batch keywords (US storefront):
curl -sS -X POST "https://appkittie.com/api/v1/keywords/difficulty" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keywords":["meditation","sleep tracker","mindfulness","breathing exercises","yoga"],"country":"US","source":"apple_mobile"}'
Credits & headers
- App list: 1 credit per returned row; if your balance is below
limit, the API trims the page. - App detail: 1 credit per call.
- App historicals: 1 credit per call.
- Ads list: 1 credit per returned ad; if your balance is below
limit, the API trims the page. - Ad detail: 1 credit per call.
- Creators list: 1 credit per returned creator.
- Organic content list: 1 credit per returned item.
- Keyword (single): 10 credits per call.
- Keyword (batch): 10 credits per keyword that returns data; duplicates removed before charge.
- Reviews: 1 credit per returned review.
Every response can include X-Credits-Used and X-Credits-Remaining. Balance also appears on the API Keys page.
Rate limits
Per key, 60s sliding window. Useful headers:
| Header | Meaning |
|---|---|
X-RateLimit-Limit |
Ceiling for the window |
X-RateLimit-Remaining |
Calls left |
X-RateLimit-Reset |
Unix time when the window rolls |
429 includes reset timing—back off or wait.
Errors
JSON body includes error; validation issues add details per field.
| HTTP | Situation |
|---|---|
| 400 | Bad input — inspect details |
| 401 | Missing or invalid key |
| 402 | Out of credits |
| 404 | Unknown app |
| 429 | Rate limited |
| 500 | Server fault |
| 503 | Search backend unavailable |
Fields you can expect
- List rows: Title, icon, developer, category, rating, reviews, review growth, download/revenue estimates (e.g. trailing 30d revenue), release/update timestamps.
- Detail: Everything above plus description, screenshots, versions, IAP catalog, contact hints, socials, hiring flags, and growth summary fields.
- Historicals: Raw daily series for reviews, score, downloads, revenue, MAU/DAU, size, and price.
- Ads: Creative assets, copy, status, dates, surfaces, countries, delivery metadata, advertised app fields, and compact app summaries.
- Creators / organic content: Creator profiles (follower counts, platform, country) and hosted organic creator videos, per app or per category, each annotated with
app_slug/app_title. - Keywords: Popularity and difficulty (0–100), competing app count, traffic score (0–100), leaderboard snippets (title, icon, reviews, score, rank).
- Reviews: Rating, title, body, reviewer nickname, date, country, and pagination offsets.
License
MIT