app.trysonar/sonar
REMOTE · TRYSONAR.APP · 2 COMPONENTS
ASO tools for AI agents: keyword research, rank tracking, competitor analysis (iOS & Android).
Available components
Last scanned (10 hours ago)
Scores higher than 81% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Marketing and SEO
Recent critical change
Authorization (12 Sept 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security66
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (sonar_delete_tracked_keyword). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability66
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 16489 tokens (~208/item across 79 items; 79 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 79 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 −1
- New tool “sonar_ad_spy_vault_remove”, which the server declares destructive security
- New tool “sonar_ad_spy_unlink”, which the server declares destructive security
- Tool “sonar_app_rankings” rewrote its description, which is the text the model reads security
- Tool “sonar_top_charts” rewrote its description, which is the text the model reads security
- Tool “sonar_keyword_rankings” rewrote its description, which is the text the model reads security
- Tool “sonar_get_app” rewrote its description, which is the text the model reads security
- Tool “sonar_discovered_keywords” rewrote its description, which is the text the model reads security
- Tool “sonar_app_search” rewrote its description, which is the text the model reads security
- Tool “sonar_app_revenue” rewrote its description, which is the text the model reads security
- Schema quality: 12303 → 16489 ▼ functional
- Server version: 0.13.2 → 0.15.0 functional
- New tool “sonar_ad_spy_open_page” functional
- New tool “sonar_ad_spy_hide_ads” functional
- New tool “sonar_ad_spy_link” functional
- New tool “sonar_ad_spy_refresh” functional
- New tool “sonar_ad_spy_vault_update” functional
- New tool “sonar_ad_spy_vault_save” functional
- New tool “sonar_ad_spy_vault” functional
- New tool “sonar_ad_spy_tiktok_posts” functional
- New tool “sonar_ad_spy_search_pages” functional
- New tool “sonar_ad_spy_script” functional
- New tool “sonar_ad_spy_scan” functional
- New tool “sonar_ad_spy_competitors” functional
- New tool “sonar_ad_spy_analyze_ad” functional
- New tool “sonar_ad_spy_ads” functional
- New tool “sonar_ad_spy_ad_analysis” functional
- “sonar_top_charts” added an optional parameter “fields” cosmetic
- “sonar_keyword_rankings” added an optional parameter “fields” cosmetic
- “sonar_get_app” added an optional parameter “fields” cosmetic
- “sonar_discovered_keywords” added an optional parameter “fields” cosmetic
- “sonar_app_search” added an optional parameter “fields” cosmetic
- “sonar_app_rankings” added an optional parameter “fields” cosmetic
- 24 Oct 26 0
- Tool “sonar_keyword_metrics” rewrote its description, which is the text the model reads security
- Tool “sonar_app_keywords” rewrote its description, which is the text the model reads security
- Tool “sonar_competitor_keywords” rewrote its description, which is the text the model reads security
- Tool “sonar_discovered_keywords” rewrote its description, which is the text the model reads security
- Tool “sonar_keyword_search” rewrote its description, which is the text the model reads security
- 23 Oct 26 0
- Tool “sonar_app_keywords” rewrote its description, which is the text the model reads security
- Tool “sonar_discovered_keywords” rewrote its description, which is the text the model reads security
- Tool “sonar_keyword_metrics” rewrote its description, which is the text the model reads security
- Tool “sonar_keyword_search” rewrote its description, which is the text the model reads security
- Tool “sonar_competitor_keywords” rewrote its description, which is the text the model reads security
- 17 Oct 26 0
- Tool “sonar_app_search” rewrote its description, which is the text the model reads security
- Server version: 0.13.1 → 0.13.2 functional
- 15 Oct 26 0
- Tool “sonar_keyword_search” rewrote its description, which is the text the model reads security
- Tool “sonar_scan_competitor” rewrote its description, which is the text the model reads security
- Server version: 0.13.0 → 0.13.1 functional
- 14 Oct 26 0
- Schema quality: 10069 → 11597 ▼ functional
- Server version: 0.11.0 → 0.13.0 functional
- New tool “sonar_update_review_reply” functional
- New tool “sonar_set_review_responder” functional
- New tool “sonar_review_responder” functional
- New tool “sonar_review_inbox” functional
- New tool “sonar_post_review_reply” functional
- New tool “sonar_draft_review_reply” functional
- New tool “sonar_cancel_review_reply” functional
- New tool “sonar_dismiss_review_reply” functional
- “sonar_set_alert” added an optional parameter “cadence” cosmetic
- “sonar_set_alert” reworded the description of “type” cosmetic
- “sonar_set_alert” reworded the description of “threshold” cosmetic
- 12 Oct 26 +1
- Stability: fail → pass ▲ security
- 10 Oct 26 −1
- Schema quality: 166 → 186 ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://trysonar.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=trysonar.app | CN=YE2,O=Let's Encrypt,C=US | 19 Sept 2026 | 18 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 6edc0989e65e173eff2dd7912cb6835a374 |
| SANs: *.trysonar.app, trysonar.app | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of trysonar.app. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| trysonar.app. | present | 2371 | 13 | Verified |
| trysonar.app. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://trysonar.app/mcp | Verified | 200 | |
| http (plaintext) | http://trysonar.app/mcp | HTTPS enforced | 308 | https://trysonar.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
sonar_keyword_search Keyword Research ~440
Research a keyword and related terms. Returns up to 10 rows — the seed keyword plus the store's top autocomplete suggestions — each with difficulty (0-100), popularity score, and results count. Use this to find keywords worth targeting; for metrics on terms you already know, sonar_keyword_metrics is cheaper. On prepaid API credits it costs 10 credits per call (rows that could not be computed are refunded); it needs a Sonar API key or connected account and is not part of the free tier. Answers within about 30 seconds. Each row carries `measured_at` (difficulty) and `popularity_measured_at` (popularity, can be older), ISO 8601 UTC; `stale: true` means at least one of them is older than 7 days. A related term that couldn't be computed in time is re-checked while the call's time budget allows (through the metrics endpoint, 1 credit per keyword served); one still not ready comes back marked `pending` (queued, not charged) — get it later with sonar_keyword_metrics. `popularity` (5-100) is the value Sonar's dashboard shows: Apple's Search Popularity when Apple has a real reading; when Apple reports a keyword below its threshold (popularity_apple 5, about 20) it is Sonar's estimate (at most 18). `popularity_source` says which (apple | proxy), `popularity_apple` is Apple's own reading (null on Android), `popularity_proxy` is Sonar's estimate beside a floored reading.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | One of Sonar's 72 keyword-research markets, as an ISO 3166-1 alpha-2 code (e.g. "us", "gb", "de", "jp", "br"). Keyword data isn't available for other storefronts. Default "us". |
| query | string | yes | Seed keyword to research (e.g. "meditation", "recipe app"). |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
No output schema declared.
No examples provided.
sonar_keyword_suggestions Keyword Suggestions ~268
Get autocomplete suggestions for a seed keyword from the App Store or Google Play, in the order the store shows them. List position is the only demand signal: the `priority` field is 0 on Google Play and currently 0 on the App Store as well. Lighter and faster than sonar_keyword_search — use when you only need term ideas without difficulty/popularity scoring. Works without an API key (free tier, limited daily use per IP). If the store is throttling, the result may be Sonar's stored copy: it then comes back as `{ data, meta }` with `meta.stale: true`, its date in `meta.stale_as_of`, and a `meta.note` to pass on to the user.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Market as an ISO 3166-1 alpha-2 code (e.g. "us", "gb", "de", "mt"). Nearly every App Store storefront and Google Play market works; the few small storefronts that are not supported return an error na… |
| seed | string | yes | Seed keyword. The store will return autocomplete suggestions starting from this term. |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
No output schema declared.
No examples provided.
sonar_list_alerts List Alert Rules ~55
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).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
sonar_list_apps List Tracked Apps ~130
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_rankings, and sonar_app_changes. Cursor-paginated (default 100 per page). Requires an Indie plan (trial counts).
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Pagination cursor from a previous call's `next_cursor`. Omit for the first page. |
| limit | integer | – | Page size (1-200). Server default applies when omitted. |
No output schema declared.
No examples provided.
sonar_list_products List Products ~101
List every product in your workspace (unpaginated): each product's id, name, country, competitor count, and its linked store versions (Sonar app id, store, store_id, name). Product ids are what sonar_track_app, sonar_track_competitor, sonar_remove_competitor, sonar_delete_product, and the screenshot-set tools take; for per-app snapshots and competitor apps use sonar_list_apps. Requires an Indie plan (trial counts).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
sonar_list_screenshot_sets List Screenshot Sets ~68
List a product's app-store screenshot sets (metadata only: store, device size, locales, studio_url). Use sonar_get_screenshot_set for full layouts. Requires an Indie plan (trial counts).
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | yes | Product id (find it with sonar_list_products). |
No output schema declared.
No examples provided.
sonar_portfolio Portfolio Rollup (Agency) ~111
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, a needs-attention triage list (visibility drops, rating drops, not-ranked apps), and the best discovered-keyword opportunities across all apps. Same numbers as the /portfolio page. Requires an Agency plan (403 on other plans).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
sonar_post_review_reply Post Review Reply ~174
WRITE tool — PUBLIC ACTION: publishes the reply on the App Store under the developer's name (now, or after delay_minutes). Overwrites an existing response (Apple keeps one per review and marks it edited). Apple shows it within ~24h: status pending_publish, then published. Needs an Admin-role App Store Connect key. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Replace the reply text before posting. Omit to post the current draft. |
| delay_minutes | integer | – | Schedule instead of posting now (minutes). 0/omitted = post now. |
| review_id | string | yes | Sonar review id (the `id` of an item from sonar_review_inbox — not Apple's review id). |
No output schema declared.
No examples provided.
sonar_remove_competitor Remove Competitor ~150
WRITE tool — remove a competitor from a product in the caller's Sonar workspace. Drops the competitor link under every own app of the product; if no other own app in the workspace still references the competitor, the competitor app is untracked as well. 404 when the product has no such competitor. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_app_id | string | yes | Sonar app UUID of the competitor to remove (the competitor's `id`, NOT a store id). |
| product_id | string | yes | Sonar product UUID — the `id` returned by sonar_list_products or sonar_create_product. |
No output schema declared.
No examples provided.
sonar_review_inbox Review Inbox ~298
An own iOS app's App Store reviews (synced from App Store Connect every 5 minutes) with their reply state: the AI draft or your text, English translations of non-English reviews and drafts, hold reasons (needs_human, quota, daily_cap), schedule time, and any live App Store response. Newest first, with per-status counts. Use the review `id` with sonar_update_review_reply / sonar_post_review_reply. Requires an Indie plan (trial counts), App Store Connect connected in Sonar, and the app to be one of your own iOS apps.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | Sonar app UUID of one of your own iOS apps (an `id` from sonar_list_apps). NOT a store id. |
| country | string | – | Only reviews from this storefront (ISO alpha-2). |
| cursor | string | – | next_cursor from the previous page. |
| language | string | – | Only reviews in this language (ISO 639-1). |
| limit | integer | – | Page size, 1-100 (default 25). |
| rating | integer | – | Only reviews with this star rating. |
| status | string | – | needs_reply = no reply yet (incl. AI drafts waiting for approval, held and failed ones), scheduled = will post soon, replied = live or waiting for Apple (incl. replies made in App Store Connect), dis… |
No output schema declared.
No examples provided.
sonar_review_insights Review Insights (AI) ~160
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 overall sentiment, surfaced feature requests, and what changed vs the previous analysis. `insight` is null if none has been generated yet — use sonar_generate_review_insights. Requires an Indie plan (trial counts).
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | Sonar app UUID of a tracked app — your own or a competitor (an `id` from sonar_list_apps). NOT a store id. |
| country | string | – | Reviews market (ISO country code). Insights are generated per country. Default "us". |
No output schema declared.
No examples provided.
sonar_review_responder Review Responder Settings ~167
The review responder's configuration for an own iOS app: whether it is switched on, manual vs auto mode (auto posts AI replies after a delay, only for reviews written after auto was enabled and within the star range), the reply instructions, sign-off, reply language, last sync, plus whether App Store Connect is connected and this month's AI-draft usage (included allowance, then 1 credit per extra draft). settings is null until the responder is switched on. Requires an Indie plan (trial counts), App Store Connect connected in Sonar, and the app to be one of your own iOS apps.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | Sonar app UUID of one of your own iOS apps (an `id` from sonar_list_apps). NOT a store id. |
No output schema declared.
No examples provided.
sonar_scan_competitor Scan Competitor Keywords ~244
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 (~30s), recording both apps' ranks. Returns generated/queued/verified_now counts; the rest verify in the background over the following hours — read results with sonar_competitor_keywords. Each account can scan a limited number of different competitors per UTC day (50 on trial and Indie, 250 on Agency); re-scanning one already scanned today is free, and past the limit the tool reports when it resets. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_app_id | string | yes | Sonar app UUID of the competitor to scan — the `competitor.id` from sonar_track_competitor, or an `id` from sonar_list_apps where is_own is false. NOT a store id. |
| own_app_id | string | yes | Sonar app UUID of your own app the scan compares against. The competitor must be linked to this app. |
No output schema declared.
No examples provided.
sonar_screenshot_devices List Screenshot Devices ~83
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 — including the landscape App Store creative-asset canvases (category "creative": product page header and search results asset). Pick a device here before sonar_create_screenshot_set. Requires an Indie plan (trial counts).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
sonar_screenshot_layout_guide Screenshot Layout Guide ~63
The layout-format reference for Sonar screenshot sets: static text, so one call per session is enough. It documents the layout JSON schema, coordinate system, image handling (remote URLs), flowing background shapes, fonts, translation overrides, and the recommended workflow.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
sonar_set_alert Set Alert Rule ~452
WRITE tool — create or update an alert subscription in the caller's Sonar workspace. Upserts on (type + scope): re-submitting the same type/scope updates the existing rule. Omit `threshold` for the per-type default; omit `scope_app_id` for an org-wide rule. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| cadence | – | – | new_review only: email cadence. instant = within ~5 minutes of the review syncing, hourly = at most one email an hour, daily = the 08:30 UTC digest. Omit to keep the stored value (daily on create). |
| countries | – | – | top_chart only: storefronts to watch (ISO 3166-1 alpha-2, e.g. ["us", "de"]), max 10. Omit to keep the stored list; null or [] = the countries you track keywords in. |
| enabled | boolean | – | Whether the rule is active. Defaults to enabled when omitted. |
| scope_app_id | – | – | Limit the alert to a single app (Sonar app UUID). Omit or null for an org-wide rule covering all tracked apps. |
| threshold | – | – | Trigger threshold; omit or null for the default. rank_drop / rank_gain: positions moved (default 5). rating_drop: tenths of a star (default 2 = a 0.2-star drop). review_spike: new reviews since the p… |
| type | string | yes | The alert type to subscribe to. top_chart = one of your own apps entered or left a store top chart (overall + its category, free/paid/grossing). new_review = a new App Store review arrived for an own… |
No output schema declared.
No examples provided.
sonar_set_review_responder Configure Review Responder ~320
WRITE tool — switch the review responder on/off for an own iOS app and update its instructions or auto-mode policy (partial update; omitted fields keep their value). Turning auto mode on only affects reviews written afterwards; anything the AI flags as needing a human is held. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | Sonar app UUID of one of your own iOS apps (an `id` from sonar_list_apps). NOT a store id. |
| auto_daily_cap | integer | – | Auto mode: max auto replies per app per day (default 50). |
| auto_delay_minutes | integer | – | Auto mode: minutes before posting (default 5). |
| auto_max_rating | integer | – | Auto mode: highest star rating to auto-reply to (default 5). |
| auto_min_rating | integer | – | Auto mode: lowest star rating to auto-reply to (default 4). |
| enabled | boolean | – | Switch the responder on (starts the review backfill) or off. |
| instructions | string | – | Instructions for the AI: tone, support contact, product facts, known issues and fixes. |
| mode | string | – | manual = every reply waits for approval; auto = AI replies post automatically after auto_delay_minutes. |
| reply_language | string | – | review = reply in the reviewer's language (default); en = always English. |
| sign_off | – | – | Sign-off appended to every reply (null clears it). |
No output schema declared.
No examples provided.
sonar_set_screenshot_translations Set Screenshot Translations ~133
Write a locale's translation overrides for screens in a screenshot set (text copy, localized captures/images). Geometry and styling always come from the source layout; anything not overridden falls back to it. The locale is auto-enabled on the set. Requires an Indie plan (trial counts) and an authorized Sonar account or a write-scope API key.
| Name | Type | Req | Description |
|---|---|---|---|
| entries | array | yes | One entry per screen to localize. |
| locale | string | yes | Target locale code, e.g. "de-DE", "pt-BR", "zh-Hans". |
| set_id | string | yes | Screenshot set id. |
No output schema declared.
No examples provided.
sonar_star_keyword Star Keyword ~160
WRITE tool — stars or unstars a tracked keyword in the caller's Sonar workspace. A star marks the keyword as a favorite/target the user is actively pursuing; starred keywords carry a starred_at timestamp in sonar_app_keywords results. Idempotent: re-starring refreshes the timestamp, unstarring a non-starred keyword is a no-op. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| starred | boolean | yes | true to star the keyword (mark as a favorite/target), false to unstar. |
| tracked_keyword_id | string | yes | Tracked-keyword UUID — the `id` (not keyword_id) returned by sonar_app_keywords or sonar_track_keywords. |
No output schema declared.
No examples provided.
sonar_top_charts Top Charts ~449
Get a store top chart (free / paid / grossing, overall or by category) with day-over-day movement: per-app rank delta, apps new to the chart, biggest movers and apps that dropped out. Use to see what's rising in a market or category. Note: summary, movers and droppedApps always describe the full top 200 — `limit` truncates the returned entries only. Movement is empty on the first day a chart is requested (no previous snapshot yet). Answers within about 30 seconds: when a live refresh can't finish in time the newest stored chart is returned with `stale: true` and its `measuredAt` date. Compact by default (no icon URLs or numeric ids; fields: "full" adds them). Works without an API key (free tier, limited daily use per IP).
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Category key; keys differ by store (e.g. iOS "SOCIAL_NETWORKING" / "GAMES", Android "SOCIAL" / "GAME"; "HEALTH_AND_FITNESS" exists on both). An unknown key is rejected with an error. Use "overall" (d… |
| chart | string | – | Chart type: "free", "paid" or "grossing". Default "free". |
| country | string | – | Market as an ISO 3166-1 alpha-2 code (e.g. "us", "gb", "de", "mt"). Nearly every App Store storefront and Google Play market works; the few small storefronts that are not supported return an error na… |
| fields | string | – | "compact" (default): each app is storeId, name, developer, rating, rank, delta, isNew (movers: rank + delta; droppedApps: previousRank) — about 60% smaller. "full": adds iconUrl and numericId to ever… |
| limit | integer | – | Number of chart entries to return (1-200). Default 50. |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
No output schema declared.
No examples provided.
sonar_track_app Track App ~220
WRITE tool — links the second-store version of an existing Sonar product (e.g. the product already tracks the iOS app and you want to add the Android version, or vice versa). Each product holds at most one iOS + one Android app; to start tracking a brand-new app, use sonar_create_product instead. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us"). Optional — defaults server-side. |
| product_id | string | yes | Sonar product UUID (from sonar_create_product). NOT a store id. |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
| store_id | string | yes | Store-specific app identifier of the version to link. iOS: bundle ID or numeric track ID — the `storeId` returned by sonar_app_search works as-is. Android: package name. |
No output schema declared.
No examples provided.
sonar_track_competitor Track Competitor ~202
WRITE tool — adds a competitor app under a Sonar product so its keywords and rankings get tracked alongside the product's own app. The product must already have its own app linked in the same store as the competitor. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us"). Optional — defaults server-side. |
| product_id | string | yes | Sonar product UUID (from sonar_create_product). NOT a store id. |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
| store_id | string | yes | Store-specific app identifier of the COMPETITOR app to track. iOS: bundle ID or numeric track ID — the `storeId` returned by sonar_app_search works as-is. Android: package name. |
No output schema declared.
No examples provided.
sonar_track_keywords Track Keywords ~242
WRITE tool — starts daily rank tracking for one or more keywords on an app in the caller's Sonar workspace. Idempotent: re-posting the same terms reports them as already_tracked instead of creating duplicates. Returns per-keyword outcomes (created / already_tracked / failed). Tracked keywords count against the workspace's plan cap (Indie 2,500, Agency 10,000 per workspace); terms beyond the remaining headroom come back as failed with the plan-limit message while the rest are still tracked. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | Sonar app UUID — the `apps[].id` returned by sonar_create_product (or sonar_track_app). NOT a store id; the store is implied by the app. |
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us"). Optional — defaults to the product's country. |
| keywords | array | yes | Keywords to start tracking (1-200). Duplicates and already-tracked terms are reported, not duplicated. |
No output schema declared.
No examples provided.
sonar_untrack_app Untrack App ~160
WRITE tool — untrack an app in the caller's Sonar workspace. Deletes the workspace's tracked keywords for it (with their notes and stars), its discovered keywords, and its competitor links, and detaches it from its product — deleting the product, and that product's screenshot sets, if no other app is left. Shared store data (app metadata, snapshots, rank history) is not deleted. To drop a competitor from one product use sonar_remove_competitor instead. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| app_id | string | yes | Sonar app UUID — the `id` returned by sonar_list_apps or sonar_create_product. NOT a store id. |
No output schema declared.
No examples provided.
sonar_untrack_keywords Untrack Keywords ~200
WRITE tool — bulk-untrack keywords for an app in the caller's Sonar workspace. Pass `all: true` to remove every tracked keyword, OR `ids: [...]` to remove specific ones (exactly one of the two). For a single keyword, sonar_delete_tracked_keyword is equivalent. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | Set true to untrack ALL keywords for the app. Mutually exclusive with `ids` — pass exactly one of `all` or `ids`. |
| app_id | string | yes | Sonar app UUID — the `id` returned by sonar_list_apps or sonar_create_product. NOT a store id. |
| ids | array | – | Tracked-keyword ids to untrack (from sonar_app_keywords). Mutually exclusive with `all` — pass exactly one of `all` or `ids`. |
No output schema declared.
No examples provided.
sonar_update_keyword_note Update Keyword Note ~139
WRITE tool — sets or clears the note on a tracked keyword in the caller's Sonar workspace (e.g. why it's tracked, an optimization hypothesis, a reminder). Idempotent: re-sending the same note is a no-op. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| note | – | yes | Note text (max 1000 chars). Pass null or an empty string to clear the note. |
| tracked_keyword_id | string | yes | Tracked-keyword UUID — the `id` (not keyword_id) returned by sonar_app_keywords or sonar_track_keywords. |
No output schema declared.
No examples provided.
sonar_update_review_reply Update Review Reply ~128
WRITE tool — replace a review's reply text (not metered, doesn't post). Use sonar_post_review_reply to publish. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The reply text. |
| review_id | string | yes | Sonar review id (the `id` of an item from sonar_review_inbox — not Apple's review id). |
| translate_from_english | boolean | – | true = body is English; store its translation into the reviewer's language (keeps the English copy). |
No output schema declared.
No examples provided.
sonar_update_screenshot Update Screenshot ~131
Replace one screen's layout in a screenshot set. Whole-document replace — fetch the current layout, modify it, send it back. The change shows up immediately in the Screenshot Studio for human review. Requires an Indie plan (trial counts) and an authorized Sonar account or a write-scope API key.
| Name | Type | Req | Description |
|---|---|---|---|
| layout | object | yes | The FULL replacement layout — this replaces the whole document, it does not merge. Never send a layout containing '[inline image omitted…]' placeholders; refetch with include_image_data first. |
| screenshot_id | string | yes | Screen id (from the set's screens array). |
No output schema declared.
No examples provided.
sonar_update_screenshot_set Update Screenshot Set ~137
Rename a screenshot set, replace its extra-locale list, and/or reorder its screens. Returns the updated set (with image data stripped). Requires an Indie plan (trial counts) and an authorized Sonar account or a write-scope API key.
| Name | Type | Req | Description |
|---|---|---|---|
| locales | array | – | Replaces the extra-locale list (e.g. ["de-DE","fr-FR"]). Locales removed here lose their stored translations. |
| name | string | – | New display name. |
| screen_order | array | – | Full permutation of the set's screen ids in the new display order. |
| set_id | string | yes | Screenshot set id. |
No output schema declared.
No examples provided.
How do I install the app.trysonar/sonar MCP server?
app.trysonar/sonar is a hosted endpoint at https://trysonar.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · trysonar.app
claude mcp add --transport http app-trysonar-sonar 'https://trysonar.app/mcp'
What is the app.trysonar/sonar MCP server?
app.trysonar/sonar is an MCP server listed in the public MCP registry as app.trysonar/sonar. ASO tools for AI agents: keyword research, rank tracking, competitor analysis (iOS & Android). This page covers its hosted endpoint (https://trysonar.app/mcp).
Is the app.trysonar/sonar MCP server safe to use?
app.trysonar/sonar scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the app.trysonar/sonar MCP server expose?
app.trysonar/sonar exposes 79 tools: sonar_app_lookup, sonar_app_search, sonar_app_aso_score, sonar_app_extract_keywords, sonar_app_reviews, and 74 more. Their descriptions and schemas cost roughly 16,489 tokens of context every time the server is loaded.
Does the app.trysonar/sonar MCP server require authentication?
No. We connected to app.trysonar/sonar without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the app.trysonar/sonar MCP server still maintained?
app.trysonar/sonar is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.