Sonar is a remote MCP server that gives an AI agent 53 tools, among them sonar_add_screenshot, sonar_alert_events, sonar_analyze_competitors. It answers at https://trysonar.app/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 10 of 10 times since 4 September 2026; the last check, on 17 October 2026, succeeded.
ASO tools for AI agents: keyword research, rank tracking, competitor analysis (iOS & Android).
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
sonar_add_screenshot | Append a screen to a screenshot set (at the end; reorder with sonar_update_screenshot_set). Requires a write-scope API key. Inputs: set_id, layout |
sonar_alert_events | The detected alert events for your workspace, newest first — the same feed as the in-app Recent Alerts panel and the email digest: rank drops/gains, top-10 entries/exits, new rankings, rating drops, review spikes, and competitor changes, ea Inputs: type, app_id, since, limit |
sonar_analyze_competitors | WRITE tool — generates a fresh AI competitive insight for one of your own apps: clusters the keyword gaps vs your competitors into named opportunity themes (with a why-now narrative and per-keyword metrics), writes threat narratives for com Inputs: app_id |
sonar_app_aso_score | Calculate an ASO (App Store Optimization) audit score (0-100) for an app. Returns the overall score plus an itemized breakdown of checks (title length, keyword usage, screenshots, ratings, etc.) so you can identify what to improve. Works wi Inputs: store, store_id, country |
sonar_app_changes | Change history for a tracked app — detected releases, metadata edits, screenshot swaps, price changes, and category moves, newest first. Useful for correlating rank movements with what the app (or a competitor) changed. Requires an Indie pl Inputs: app_id, type, limit |
sonar_app_extract_keywords | Extract the most likely target keywords from an app's title and description, ranked by relevance. Useful for understanding what an app (yours or a competitor) is optimizing for. Works without an API key (free tier, limited daily use per IP) Inputs: store, store_id, country, max |
sonar_app_keywords | List the keywords tracked for an app in the caller's Sonar workspace, with latest difficulty, popularity, results count, note, and starred_at (favorite/target marker) per keyword. Returns the tracked-keyword ids used by sonar_update_keyword Inputs: app_id, cursor, limit |
sonar_app_lookup | Look up a single app by its store ID. Returns app metadata including name, developer, category, rating, reviews, installs (Android), and price. Works without an API key (free tier, limited daily use per IP). Inputs: store, store_id, country |
sonar_app_overview | The dashboard's computed scoreboard for one of your apps in a single call: visibility index and share of voice (with 7-day deltas and a daily spark), ranked / top-10 keyword counts with movement, best rank, the biggest 7-day improvements an Inputs: app_id, days |
sonar_app_rankings | Rank history for an app's tracked keywords — daily ranks over the requested window, one history array per keyword. Use this to check how rankings moved after a metadata change or to find keywords trending up or down. Cursor-paginated over k Inputs: app_id, days, keyword_id, cursor, limit |
sonar_app_revenue | Estimate monthly revenue for an app, based on install counts, ratings, and category benchmarks. Returns the dollar estimate, a confidence grade (high/medium/low) with the factors behind it, and the methodology used — always communicate the Inputs: store, store_id, country |
sonar_app_reviews | Fetch user reviews for an app. Supports filtering by star rating range and sorting by recent or helpful. Useful for sentiment analysis, feature-request mining, and competitive research. Inputs: store, store_id, country, sort, min_rating, max_rating |
sonar_app_search | Search apps in the App Store or Google Play by keyword. Returns ranked list of apps with metadata (results are returned in store ranking order). Works without an API key (free tier, limited daily use per IP). Inputs: query, store, country, num |
sonar_competitor_keywords | Keywords a tracked competitor currently ranks for (last 7 days of SERP data), with difficulty and popularity per keyword. Pass own_app_id for gap analysis: keywords where the competitor ranks but your app doesn't are marked gap=missing. Cur Inputs: competitor_app_id, own_app_id, cursor, limit |
sonar_competitor_landscape | The full competitive keyword picture for one of your own apps vs every tracked competitor, in one call: live stats (keyword gaps where competitors rank and you don't, winnable gaps, competitors climbing on your tracked keywords, keywords yo Inputs: app_id |
sonar_create_product | WRITE tool — creates a product in the caller's Sonar workspace and starts tracking the given app(s). A product is the cross-store unit (one iOS + one Android app, or just one of either). Returns the product id and the Sonar app ids needed b Inputs: apps, name |
sonar_create_screenshot_set | Create an app-store screenshot set for a product. Read sonar_screenshot_layout_guide first, then author the screens array. The set is immediately visible/editable for humans in the Screenshot Studio (studio_url in the response). Requires a Inputs: product_id, store, device_size, name, template_id, screens |
sonar_delete_alert | WRITE tool — delete an alert subscription in the caller's Sonar workspace. Requires an Indie plan (trial counts) and an API key with the write scope. Inputs: id |
sonar_delete_product | WRITE tool — delete a product and untrack its apps in the caller's Sonar workspace. Requires an Indie plan (trial counts) and an API key with the write scope. Inputs: product_id |
sonar_delete_screenshot | Delete one screen from a screenshot set. A set keeps at least one screen — deleting the last one is rejected. Requires a write-scope API key. Inputs: screenshot_id |
sonar_delete_screenshot_set | Permanently delete a screenshot set and everything in it (screens, translations). Irreversible — confirm with the user before deleting work they may want. Requires a write-scope API key. Inputs: set_id |
sonar_delete_tracked_keyword | WRITE tool — stop tracking one keyword/app pair in the caller's Sonar workspace. Identify the pair by its tracked-keyword id (from sonar_app_keywords). Requires an Indie plan (trial counts) and an API key with the write scope. Inputs: tracked_keyword_id |
sonar_discovered_keywords | Keywords Sonar's discovery engine surfaced for one of your tracked apps but that aren't tracked yet — ranked finds (the app already ranks, unnoticed), competitor gaps, and AI/autocomplete-sourced ideas — each with popularity, difficulty, AI Inputs: app_id, country, source, status, bucket, min_relevance |
sonar_export_screenshots | Render a screenshot set to store-ready PNGs SERVER-SIDE (no browser needed) and save them as one ZIP per locale in output_dir — ready for App Store Connect / Play Console upload. Rendering happens through the same engine as the Screenshot S Inputs: set_id, locales, all_locales, output_dir |
sonar_generate_review_insights | WRITE tool — generates a fresh AI review analysis for a tracked app from its recent reviews (praise/complaint themes, sentiment, feature requests, trend vs the previous run). At most one analysis per app+country every 90 days (429 with the Inputs: app_id, country |
sonar_get_app | Get full details for one tracked app in the caller's Sonar workspace: store metadata plus up to 90 daily snapshots of rating, review count, version, and installs. Requires an Indie plan (trial counts). Inputs: app_id |
sonar_get_screenshot_set | Fetch a screenshot set in full: every screen's layout JSON plus per-screen translation overrides keyed by locale. By default inline image data is replaced with placeholders to keep the response readable. Inputs: set_id, include_image_data |
sonar_keyword_metrics | Difficulty + popularity for a specific keyword (or up to 25 in bulk). Use this when you already know which keywords you care about — costs 1 credit per keyword. Works without an API key for up to 5 keywords/day (free tier, per IP); an API k Inputs: keyword, keywords, store, country |
sonar_keyword_rankings | SERP history for one tracked keyword — which apps ranked in the top results on each measured day, newest first. Use this to see who competes on a keyword and how the top spots shifted over time. The keyword must be tracked in the caller's S Inputs: keyword_id, days |
sonar_keyword_search | Research a keyword and related terms. Returns difficulty (0-100), popularity score, and results count for the seed keyword plus related autocomplete suggestions. Use this to find keywords worth targeting. Inputs: query, store, country |
sonar_keyword_suggestions | Get autocomplete suggestions for a seed keyword from the App Store or Google Play. Returns terms with a priority score (higher = more searched). Lighter and faster than sonar_keyword_search — use when you only need term ideas without diffic Inputs: seed, store, country |
sonar_list_alerts | List your alert subscriptions — each rule defines a change type (rank drops, review spikes, etc.), its scope (a specific app or org-wide), threshold, and whether it's enabled. Requires an Indie plan (trial counts). |
sonar_list_apps | List the apps tracked in the caller's Sonar workspace (own apps + competitors), each with its latest snapshot (rating, review count, version, installs). Returns the Sonar app UUIDs needed by sonar_get_app, sonar_app_keywords, sonar_app_rank Inputs: cursor, limit |
sonar_list_products | List your products with their linked store versions and competitor counts. Use it to discover product/app UUIDs. Requires an Indie plan (trial counts). |
sonar_list_screenshot_sets | List a product's app-store screenshot sets (metadata only: store, device size, locales, studio_url). Use sonar_get_screenshot_set for full layouts. Inputs: product_id |
sonar_portfolio | The whole portfolio's health in one call — for orgs managing many apps: per-app KPIs (visibility + 7-day delta, ranked/top-10 counts, net rank movement, rating, review count), org-wide totals, the biggest keyword movers in both directions, |
sonar_remove_competitor | WRITE tool — remove a competitor from a product in the caller's Sonar workspace. Requires an Indie plan (trial counts) and an API key with the write scope. Inputs: product_id, competitor_app_id |
sonar_review_insights | The latest AI review analysis for a tracked app (your own or a competitor): what users praise and complain about as named themes with frequency, verbatim quotes, and trend movement (new / persisting / growing / improving / resolved), plus o Inputs: app_id, country |
sonar_scan_competitor | WRITE tool — runs an AI keyword discovery scan on a tracked competitor: generates the search terms the competitor's listing is optimized for (brand terms included), queues them for SERP verification, and verifies the first batch inline (~30 Inputs: competitor_app_id, own_app_id |
sonar_screenshot_devices | List the device sizes supported for app-store screenshot sets, with their canvas dimensions (the pixel coordinate space all layouts use) and which store each belongs to. Pick a device here before sonar_create_screenshot_set. |
sonar_screenshot_layout_guide, sonar_set_alert, sonar_set_screenshot_translations, sonar_star_keyword, sonar_top_charts, sonar_track_app, sonar_track_competitor, sonar_track_keywords, sonar_untrack_app, sonar_untrack_keywords, sonar_update_keyword_note, sonar_update_screenshot, sonar_update_screenshot_set
Every block below points at https://trysonar.app/mcp. Pick your client and copy.
claude mcp add --transport http sonar https://trysonar.app/mcp
{
"mcpServers": {
"sonar": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://trysonar.app/mcp"]
}
}
}{
"mcpServers": {
"sonar": {
"url": "https://trysonar.app/mcp"
}
}
}{
"servers": {
"sonar": {
"type": "http",
"url": "https://trysonar.app/mcp"
}
}
}{
"context_servers": {
"sonar": {
"url": "https://trysonar.app/mcp"
}
}
}{
"mcpServers": {
"sonar": {
"serverUrl": "https://trysonar.app/mcp"
}
}
}{
"mcpServers": {
"sonar": {
"url": "https://trysonar.app/mcp"
}
}
}name: Sonar
version: 0.0.1
schema: v1
mcpServers:
- name: Sonar
type: streamable-http
url: https://trysonar.app/mcp{
"mcpServers": {
"sonar": {
"httpUrl": "https://trysonar.app/mcp"
}
}
}{
"mcpServers": {
"sonar": {
"type": "http",
"url": "https://trysonar.app/mcp"
}
}
}{
"mcpServers": {
"sonar": {
"url": "https://trysonar.app/mcp"
}
}
}goose://extension?url=https%3A%2F%2Ftrysonar.app%2Fmcp&type=streamable_http&id=sonar&name=Sonar
It answered our last check on 17 October 2026 in 413 ms. Over 10 checks since 4 September 2026 it answered 10. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by trysonar.app and served from trysonar.app, the vendor's own domain: https://trysonar.app/mcp.
53, as returned by the server's own tools/list on 9 September 2026: sonar_add_screenshot, sonar_alert_events, sonar_analyze_competitors, sonar_app_aso_score, sonar_app_changes, sonar_app_extract_keywords, sonar_app_keywords, sonar_app_lookup, and 45 more.
It answered our last check on 17 October 2026 in 413 ms. Over 10 checks since 4 September 2026 it answered 10.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://trysonar.app/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: app.trysonar. Endpoint host: trysonar.app. ARD identifier: urn:air:app.trysonar:mcp:sonar.
First indexed 31 August 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.