{
  "markdown": "# @sonarapp/mcp\n\n[![npm](https://img.shields.io/npm/v/@sonarapp/mcp.svg)](https://www.npmjs.com/package/@sonarapp/mcp)\n[![license](https://img.shields.io/npm/l/@sonarapp/mcp.svg)](./LICENSE)\n[![smithery badge](https://smithery.ai/badge/trysonar/sonar)](https://smithery.ai/servers/trysonar/sonar)\n\nThe official **Sonar** MCP server — App Store Optimization tools for AI agents.\n\nLets Claude Desktop, Claude Code, Cursor, Cline, and any [Model Context Protocol](https://modelcontextprotocol.io)-compatible client look up apps, research keywords, audit ASO, mine reviews, and estimate revenue across the iOS App Store and Google Play. Powered by [Sonar](https://trysonar.app).\n\n---\n\n## Tools\n\n### Read tools — stateless\n\n| Tool | What it does |\n|-|-|\n| `sonar_app_lookup` | Look up app metadata by store ID |\n| `sonar_app_search` | Search apps by keyword (returns store ranking order) |\n| `sonar_app_aso_score` | ASO audit score (0-100) with itemized checks |\n| `sonar_app_extract_keywords` | Extract target keywords from an app's listing |\n| `sonar_app_reviews` | Fetch reviews with rating filters and sort options |\n| `sonar_app_revenue` | Estimate monthly revenue with methodology |\n| `sonar_keyword_search` | Keyword research (difficulty, popularity, related terms) |\n| `sonar_keyword_metrics` | Difficulty + popularity for specific keywords (single or bulk) |\n| `sonar_keyword_suggestions` | Autocomplete suggestions from the store |\n| `sonar_top_charts` | Top free/paid/grossing chart with day-over-day movement |\n\nStateless tools work on **any plan with credits**, with both iOS and Android.\n\n### Read tools — your workspace (Indie plan)\n\n| Tool | What it does |\n|-|-|\n| `sonar_list_apps` | List your tracked apps with latest snapshots (rating, reviews, installs) |\n| `sonar_get_app` | App detail + up to 90 days of snapshot history |\n| `sonar_app_keywords` | Keywords tracked for an app, with difficulty + popularity |\n| `sonar_app_rankings` | Daily rank history for an app's tracked keywords |\n| `sonar_app_changes` | Detected releases, metadata edits, screenshot/price/category changes |\n| `sonar_keyword_rankings` | SERP history for a tracked keyword (who ranked, when) |\n| `sonar_competitor_keywords` | Keywords a competitor ranks for + gap analysis vs your app |\n| `sonar_competitor_landscape` | Full competitive picture for one of your own apps — gap/winnable/threat/lead stats + latest AI insight |\n\nWorkspace reads require an **Indie plan** (an active trial counts); the default `read`-scope key is enough.\n\n### Write tools (Indie plan + write scope)\n\n| Tool | What it does |\n|-|-|\n| `sonar_create_product` | Create a product in your Sonar workspace and start tracking its app(s) |\n| `sonar_track_app` | Link the second-store version (iOS ↔ Android) of an existing product |\n| `sonar_track_competitor` | Add a competitor app under a product |\n| `sonar_track_keywords` | Start daily rank tracking for keywords on an app (bulk, idempotent) |\n| `sonar_update_keyword_note` | Set or clear the note on a tracked keyword |\n| `sonar_scan_competitor` | Run a keyword discovery scan on a competitor (read results with `sonar_competitor_keywords`) |\n| `sonar_analyze_competitors` | Generate a fresh AI competitive insight for one of your own apps (7-day cooldown; read it with `sonar_competitor_landscape`) |\n\nWrite tools mutate your workspace and require an **Indie plan** (an active trial counts) plus an API key created with the **`write` scope**. The server enforces both — without them, calls return a 403 explaining what to fix.\n\nTogether these close the loop for agents: set up tracking with the write tools, then read back rankings, changes, and gap analyses with the workspace tools.\n\n## Try it free — no API key needed\n\nThe server runs without a key in **free mode**: `sonar_app_search`, `sonar_app_lookup`, `sonar_app_aso_score`, `sonar_app_extract_keywords`, and `sonar_keyword_suggestions` share a free allowance of 30 requests/day per IP, and `sonar_keyword_metrics` (keyword difficulty + popularity) gets 5 keywords/day. Just install it with no `env` block and ask your agent about ASO. When you hit the limit, the error tells you how to sign up.\n\n## Get an API key\n\nFor everything else (tracking, rankings, competitors, higher limits) you'll need a Sonar API key — get one at [trysonar.app/developers](https://trysonar.app/developers).\n\nThe cheapest path is **prepaid API credits** — packs from $10 (1,000 credits), with 50 free credits on signup and no subscription. Built specifically for this use case. See [pricing](https://trysonar.app/#pricing).\n\n## Install\n\n### Claude Desktop\n\nAdd to your config file (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, `%APPDATA%\\Claude\\claude_desktop_config.json` on Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"sonar\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@sonarapp/mcp\"],\n      \"env\": {\n        \"SONAR_API_KEY\": \"aso_your_key_here\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. The `sonar_*` tools will appear in the tool picker.\n\n### Claude Code\n\n```bash\nclaude mcp add sonar -e SONAR_API_KEY=aso_your_key_here -- npx -y @sonarapp/mcp\n```\n\n### Cursor\n\nAdd to `~/.cursor/mcp.json` (or your project's `.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"sonar\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@sonarapp/mcp\"],\n      \"env\": {\n        \"SONAR_API_KEY\": \"aso_your_key_here\"\n      }\n    }\n  }\n}\n```\n\n### Cline / other MCP clients\n\nMost clients use the same `command` + `args` + `env` shape as above. Point the command at `npx -y @sonarapp/mcp` and pass `SONAR_API_KEY` in the env.\n\n## Configuration\n\n| Variable | Required | Default | Description |\n|-|-|-|-|\n| `SONAR_API_KEY` | no (free mode without it) | — | Your Sonar API key (`aso_...`) |\n| `SONAR_API_URL` | no | `https://trysonar.app` | Override the API base URL (only used for self-hosting / staging) |\n\n## Example prompts\n\n> \"Use Sonar to look up Spotify on iOS in the US store and report its rating, review count, and category.\"\n\n> \"Run an ASO audit on `com.duolingo` on Android and tell me what to fix.\"\n\n> \"Research the keyword 'habit tracker' on iOS — give me difficulty, popularity, and 5 related terms with lower difficulty I should consider.\"\n\n> \"Pull the 50 most recent 1- and 2-star reviews of `1517783697` on iOS US and group complaints by theme.\"\n\n> \"Search 'meditation' on the App Store and estimate monthly revenue for the top 5 results.\"\n\n## Privacy Policy\n\nFull policy: **<https://trysonar.app/privacy>**\n\nThe MCP server is a thin client around Sonar's REST API — it stores nothing locally and no data is logged by this package itself.\n\n- **Data collected:** tool inputs (app IDs, keywords, country codes) are sent to Sonar's API over HTTPS to produce results; authenticated requests include your API key as a `Bearer` token. Sonar logs API requests (endpoint, status, timing) for rate limiting and abuse prevention.\n- **Data usage:** inputs are used solely to serve the request (keyword metrics, app lookups, etc.); resulting JSON is returned to your AI client.\n- **Storage & retention:** the package keeps no state on disk. Server-side request logs are retained for 90 days; workspace data (tracked apps/keywords) persists in your Sonar account until you delete it.\n- **Third-party sharing:** no user data is sold or shared with third parties; queries against public app-store data (Apple, Google) contain no personal information.\n- **Contact:** [hello@trysonar.app](mailto:hello@trysonar.app)\n\n## Troubleshooting\n\n**\"SONAR_API_KEY is not set — running in free mode\"** — Expected if you haven't configured a key: the free tools keep working with per-IP daily limits. If you DID configure a key, the MCP client did not pass the env var through — check the `env` section of your client's config file. Some clients require an absolute path to `npx` — try `which npx` and use that.\n\n**\"Authentication failed\"** — Your key is invalid, expired, or your subscription lapsed. Visit [trysonar.app/developers](https://trysonar.app/developers) to check.\n\n**\"Access denied. Endpoint may require Indie plan\"** — The 10 stateless read tools work on any plan with credits. The workspace read tools and write tools require an Indie plan (an active trial counts); write tools additionally need an API key created with the `write` scope. If you're on a setup or trial-expired plan, reactivate first.\n\n## Companion: CLI\n\nPrefer the terminal? Use [`@sonarapp/cli`](https://www.npmjs.com/package/@sonarapp/cli) (`sonar` binary) — same data, same API key.\n\n## License\n\nMIT © Peter Sutarik\n",
  "bytes": 8558,
  "sha": "3011ba2436ac7b63d5478653607178c42180d7af9883c83987c6f0eb0a6e1025",
  "repo_slug": "trysonar/mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_app_trysonar_sonar_489c5a6c/readme"
}