App Pain API

What users hate about ANY iOS/Android app: clustered complaints, evidence, trends. No key needed.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
99%
이름 품질
97%
오염 위험
80%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringget_app_reviews에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,761토큰 (도구 정의)
~1.8 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.38%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 7개