App Pain API
What users hate about ANY iOS/Android app: clustered complaints, evidence, trends. No key needed.
사용해야 할까요
품질 및 안전성
발견 사항 (2)
- HIGH
- MEDIUMget_app_reviews에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"app-pain-api": {
"url": "https://app-pain-api.quiet-delta.workers.dev/mcp"
}
}
}원격 엔드포인트
https://app-pain-api.quiet-delta.workers.dev/mcpstreamable-http할 수 있는 일
도구 목록
도구 (7)
🟢search_apps(q, store, country, limit)
Search the iOS App Store and Google Play (both merged by default) to find apps and their ids. Use this FIRST when you only know an app name or a category.
입력 스키마
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "search query, e.g. \"habit tracker\" or \"notion\""
},
"store": {
"type": "string",
"enum": [
"ios",
"android"
],
"description": "limit to one store (default: both merged)"
},
"country": {
"type": "string",
"description": "ISO country code, default \"us\""
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "max results per store, default 10"
}
},
"required": [
"q"
]
}🟢mine_app_pain_points(appId, store, reviews, maxRating, model, ...)
THE core tool: fetch recent reviews of any iOS/Android app, keep the negative ones, and cluster them into ranked pain points (title, sharePercent, severity 1-5, verbatim evidence quotes). Ideal for competitive research and product discovery. Cached 7 days (instant on repeat); a COLD server-side analysis takes 30-120s. If the result has "mode":"agent", it contains prepared negative reviews and "instructions" — do the clustering yourself and present it to the user.
입력 스키마
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App Store or Google Play URL, iOS numeric id (e.g. 324684580) or Android package (e.g. com.spotify.music) — get ids from search_apps"
},
"store": {
"type": "string",
"enum": [
"ios",
"android"
],
"description": "optional — inferred from appId (numeric id / App Store URL → ios, package / Play URL → android)"
},
"reviews": {
"type": "integer",
"enum": [
100,
300,
500
],
"description": "reviews to analyze, default 300 (other values round up to these tiers; iOS depth is ~50 due to Apple edge limits)"
},
"maxRating": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "ratings <= this count as negative, default 3"
},
"model": {
"type": "string",
"enum": [
"glm-5.3-flash"
],
"description": "premium refinement model (paid keys only). Omit for the free default."
},
"analyze": {
"type": "string",
"enum": [
"auto",
"server",
"agent"
],
"description": "who clusters on a cold run: \"server\" = our model; \"agent\" = you get the prepared negative reviews + instructions and cluster them with your own model; \"auto\" (default) = server, switching to agent when the server-side allowance is used up"
},
"country": {
"type": "string",
"description": "ISO country code, default \"us\""
}
},
"required": [
"appId"
]
}🟢get_pain_trend(appId, store, from, to)
How an app's pain points changed over time: compares two archived analyses and labels each theme new / resolved / rising / falling / stable with share deltas (percentage points). Instant (archive read, no LLM). Default: latest vs ~30 days earlier. Returns a note when the app has fewer than two snapshots yet.
입력 스키마
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App Store or Google Play URL, iOS numeric id (e.g. 324684580) or Android package (e.g. com.spotify.music) — get ids from search_apps"
},
"store": {
"type": "string",
"enum": [
"ios",
"android"
],
"description": "optional — inferred from appId (numeric id / App Store URL → ios, package / Play URL → android)"
},
"from": {
"type": "string",
"description": "baseline date YYYY-MM-DD (optional)"
},
"to": {
"type": "string",
"description": "comparison date YYYY-MM-DD (optional, default newest)"
}
},
"required": [
"appId"
]
}🟢get_app_details(appId, store, country)
App metadata: name, developer, category, price, average rating, rating count and 1-5★ histogram (when available).
입력 스키마
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App Store or Google Play URL, iOS numeric id (e.g. 324684580) or Android package (e.g. com.spotify.music) — get ids from search_apps"
},
"store": {
"type": "string",
"enum": [
"ios",
"android"
],
"description": "optional — inferred from appId (numeric id / App Store URL → ios, package / Play URL → android)"
},
"country": {
"type": "string",
"description": "ISO country code, default \"us\""
}
},
"required": [
"appId"
]
}🟢get_version_history(appId, store, country)
Per-version review stats (review count, average rating, first/last seen) — spot a rating crash right after a bad release. Android: aggregated from recent reviews. iOS: current version + release notes.
입력 스키마
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App Store or Google Play URL, iOS numeric id (e.g. 324684580) or Android package (e.g. com.spotify.music) — get ids from search_apps"
},
"store": {
"type": "string",
"enum": [
"ios",
"android"
],
"description": "optional — inferred from appId (numeric id / App Store URL → ios, package / Play URL → android)"
},
"country": {
"type": "string",
"description": "ISO country code, default \"us\""
}
},
"required": [
"appId"
]
}🔴watch_competitors(action, appId, store, webhookUrl)
Continuous competitor monitoring (paid plans: Starter 2 apps weekly, Pro 15 apps daily). Manage the watchlist and the alert destination; digests of NEW 1-2★ reviews and NEW/RISING pain points are pushed to a Slack / Discord / any https webhook. action: list | add | remove | set_webhook | test.
입력 스키마
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"list",
"add",
"remove",
"set_webhook",
"test"
]
},
"appId": {
"type": "string",
"description": "for add/remove: store URL, iOS id or Android package"
},
"store": {
"type": "string",
"enum": [
"ios",
"android"
],
"description": "optional — inferred from appId (numeric id / App Store URL → ios, package / Play URL → android)"
},
"webhookUrl": {
"type": "string",
"description": "for set_webhook (or add): https URL, e.g. a Slack incoming webhook or Discord channel webhook"
}
},
"required": [
"action"
]
}🟢get_app_reviews(appId, store, page, sort, country)
Fetch raw app reviews (unified schema across stores: rating/title/body/version/date/devReply/thumbsUp), 50 per page. Use for drill-down after mine_app_pain_points.
입력 스키마
{
"type": "object",
"properties": {
"appId": {
"type": "string",
"description": "App Store or Google Play URL, iOS numeric id (e.g. 324684580) or Android package (e.g. com.spotify.music) — get ids from search_apps"
},
"store": {
"type": "string",
"enum": [
"ios",
"android"
],
"description": "optional — inferred from appId (numeric id / App Store URL → ios, package / Play URL → android)"
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "page number, default 1 (50/page)"
},
"sort": {
"type": "string",
"enum": [
"recent",
"helpful"
],
"description": "default recent (Android only; iOS uses the store default order)"
},
"country": {
"type": "string",
"description": "ISO country code, default \"us\""
}
},
"required": [
"appId"
]
}커뮤니티
증거