app.trysonar/sonar
NPM · @SONARAPP/MCP · 2 COMPONENTS · SCANNED SEP 20
ASO tools for AI agents: keyword research, rank tracking, competitor analysis (iOS & Android).
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 6 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5512 tokens (~128/item across 43 items; 43 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 Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 43 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
How do I install the app.trysonar/sonar MCP server?
app.trysonar/sonar runs locally as an npm package, launched with npx -y @sonarapp/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @sonarapp/mcp
claude mcp add app-trysonar-sonar -- npx -y @sonarapp/mcp
{
"mcpServers": {
"app-trysonar-sonar": {
"command": "npx",
"args": [
"-y",
"@sonarapp/mcp"
]
}
}
} {
"servers": {
"app-trysonar-sonar": {
"command": "npx",
"args": [
"-y",
"@sonarapp/mcp"
]
}
}
} codex mcp add app-trysonar-sonar -- npx -y @sonarapp/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"app-trysonar-sonar": {
"type": "local",
"command": [
"npx",
"-y",
"@sonarapp/mcp"
],
"enabled": true
}
}
} openclaw mcp add app-trysonar-sonar --command npx --arg -y --arg @sonarapp/mcp
mcp_servers:
app-trysonar-sonar:
command: "npx"
args: ["-y", "@sonarapp/mcp"] {
"McpServers": {
"app-trysonar-sonar": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@sonarapp/mcp"
]
}
}
} assistant mcp add app-trysonar-sonar -t stdio -c npx -a -y @sonarapp/mcp
{
"mcpServers": {
"app-trysonar-sonar": {
"command": "npx",
"args": [
"-y",
"@sonarapp/mcp"
]
}
}
} 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.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 −3
- Stability: pass → 0.80 functional
- 16 Sept 26 0
- Stability: 0.97 → pass security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
- Security disclosure: unverified → fail ▼ functional
- 10 Sept 26 0
- Security disclosure: fail → unverified ▼ 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 20 Sept 2026 · Analysed npm/@sonarapp/mcp@0.7.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 95 packages
| Packages resolved | 95 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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_add_screenshot ~64
Append a screen to a screenshot set (at the end; reorder with sonar_update_screenshot_set). Requires a write-scope API key.
| Name | Type | Req | Description |
|---|---|---|---|
| layout | object | – | Omit for a blank screen. |
| set_id | string | yes | Screenshot set to append to. |
No output schema declared.
No examples provided.
sonar_app_aso_score ~160
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 without an API key (free tier, limited daily use per IP).
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Default "us". |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
| store_id | string | yes | Store-specific app identifier. iOS: numeric track ID. Android: package name. |
No output schema declared.
No examples provided.
sonar_app_changes ~128
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 a Full plan (trial counts).
| 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. |
| limit | integer | – | Max changes to return (1-200). Default 50. |
| type | string | – | Filter to one change type. Omit for all types. |
No output schema declared.
No examples provided.
sonar_app_extract_keywords ~163
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).
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Default "us". |
| max | integer | – | Maximum number of keywords to extract (1-50, default 20). |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
| store_id | string | yes | Store-specific app identifier. iOS: numeric track ID. Android: package name. |
No output schema declared.
No examples provided.
sonar_app_keywords ~168
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_note and sonar_star_keyword, and the keyword_ids used by sonar_keyword_rankings. Cursor-paginated (default 50 per page). Requires a Full plan (trial counts).
| 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. |
| 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_app_lookup ~153
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).
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Default "us". |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
| store_id | string | yes | Store-specific app identifier. iOS: numeric track ID (e.g. "123456789"). Android: package name (e.g. "com.spotify.music"). |
No output schema declared.
No examples provided.
sonar_app_rankings ~194
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 keywords (default 50 per page). Requires a Full plan (trial counts).
| 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. |
| cursor | string | – | Pagination cursor from a previous call's `next_cursor`. Omit for the first page. |
| days | integer | – | History window in days (1-365). Default 30. |
| keyword_id | string | – | Restrict to one keyword — a keyword_id from sonar_app_keywords. Omit for all tracked keywords. |
| limit | integer | – | Page size (1-200). Server default applies when omitted. |
No output schema declared.
No examples provided.
sonar_app_revenue ~144
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 confidence alongside the number.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Default "us". |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
| store_id | string | yes | Store-specific app identifier. iOS: numeric track ID. Android: package name. |
No output schema declared.
No examples provided.
sonar_app_reviews ~211
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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Default "us". |
| limit | integer | – | Maximum number of reviews to return (1-200). |
| max_rating | integer | – | Filter to reviews with a star rating <= this value (1-5). |
| min_rating | integer | – | Filter to reviews with a star rating >= this value (1-5). |
| sort | string | – | Sort order. "recent" returns newest first, "helpful" returns most-voted first. |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
| store_id | string | yes | Store-specific app identifier. iOS: numeric track ID. Android: package name. |
No output schema declared.
No examples provided.
sonar_app_search ~150
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).
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Default "us". |
| num | integer | – | Number of results to return (1-50, default 10). |
| query | string | yes | Search query (e.g. "meditation", "meal planner"). |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
No output schema declared.
No examples provided.
sonar_competitor_keywords ~207
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. Cursor-paginated (default 50 per page). Requires a Full plan (trial counts).
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_app_id | string | yes | Sonar app UUID of the competitor — the `competitor.id` from sonar_track_competitor, or an `id` from sonar_list_apps where is_own is false. NOT a store id. |
| 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. |
| own_app_id | string | – | Sonar app UUID of your own app. When set, each keyword includes your current rank and a gap marker for keywords you don't rank for. |
No output schema declared.
No examples provided.
sonar_create_product ~141
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 by sonar_track_keywords and sonar_track_competitor. Requires a Full plan (trial counts) and an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| apps | array | yes | 1-2 store versions: a single iOS or Android app, or one of each for a cross-store product. |
| name | string | – | Product name. Optional — defaults to the first app's name. |
No output schema declared.
No examples provided.
sonar_create_screenshot_set ~181
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 write-scope API key.
| Name | Type | Req | Description |
|---|---|---|---|
| device_size | string | yes | Device id from sonar_screenshot_devices, e.g. "iphone-6.7". |
| name | string | – | Display name. |
| product_id | string | yes | Product the set belongs to. |
| screens | array | – | Initial screens, in order (max 10). Either this or template_id, not both; with neither you get one blank screen. |
| store | string | yes | Target app store. |
| template_id | string | – | Seed from a built-in template (see sonar_screenshot_layout_guide) instead of providing screens. |
No output schema declared.
No examples provided.
sonar_delete_alert ~67
WRITE tool — delete an alert subscription in the caller's Sonar workspace. Requires a Full plan (trial counts) and an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The alert subscription UUID — the `id` returned by sonar_list_alerts or sonar_set_alert. |
No output schema declared.
No examples provided.
sonar_delete_product ~71
WRITE tool — delete a product and untrack its apps in the caller's Sonar workspace. Requires a Full plan (trial counts) and an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| 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_delete_screenshot ~53
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.
| Name | Type | Req | Description |
|---|---|---|---|
| screenshot_id | string | yes | Screen id to delete. |
No output schema declared.
No examples provided.
sonar_delete_screenshot_set ~60
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.
| Name | Type | Req | Description |
|---|---|---|---|
| set_id | string | yes | Screenshot set id. |
No output schema declared.
No examples provided.
sonar_delete_tracked_keyword ~89
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 a Full plan (trial counts) and an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| tracked_keyword_id | string | yes | The tracked-keyword UUID — the `id` returned by sonar_app_keywords. NOT the keyword_id. |
No output schema declared.
No examples provided.
sonar_get_app ~83
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 a Full plan (trial counts).
| 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_get_screenshot_set ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_image_data | boolean | – | When false (default), inline base64 images are replaced with short placeholders to keep the response small. Set true only when you need the raw data URLs (a layout containing placeholders is rejected… |
| set_id | string | yes | Screenshot set id. |
No output schema declared.
No examples provided.
sonar_keyword_metrics ~198
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 key removes that cap. Use sonar_keyword_search instead when you want related keyword ideas alongside metrics.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Default "us". |
| keyword | string | – | Single keyword to fetch metrics for. Use this OR `keywords`, not both. |
| keywords | array | – | Bulk list of keywords to fetch metrics for (max 25). Use this OR `keyword`, not both. 1 credit per keyword. |
| store | string | yes | App store. "ios" for Apple App Store, "android" for Google Play. |
No output schema declared.
No examples provided.
sonar_keyword_rankings ~125
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 Sonar workspace. Requires a Full plan (trial counts).
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | History window in days (1-365). Default 30. |
| keyword_id | string | yes | Sonar keyword UUID — a `keyword_id` from sonar_app_keywords or sonar_competitor_keywords. NOT the keyword text. |
No output schema declared.
No examples provided.
sonar_keyword_search ~126
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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). 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 ~152
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 difficulty/popularity scoring. Works without an API key (free tier, limited daily use per IP).
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Default "us". |
| 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 ~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 a Full plan (trial counts).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
sonar_list_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 a Full 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 ~38
List your products with their linked store versions and competitor counts. Use it to discover product/app UUIDs. Requires a Full plan (trial counts).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
sonar_list_screenshot_sets ~60
List a product's app-store screenshot sets (metadata only: store, device size, locales, studio_url). Use sonar_get_screenshot_set for full layouts.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | yes | Product id (find it with sonar_list_products). |
No output schema declared.
No examples provided.
sonar_remove_competitor ~100
WRITE tool — remove a competitor from a product in the caller's Sonar workspace. Requires a Full plan (trial counts) and 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_scan_competitor ~173
WRITE tool — runs a keyword discovery scan on a tracked competitor: finds keywords the competitor ranks for and records both apps' ranks. Heavier than other calls (fans out scraper requests; can take ~30s+). Returns counts of keywords discovered and ranked; read the results afterwards with sonar_competitor_keywords. Requires a Full plan (trial counts) and 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 ~52
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
sonar_screenshot_layout_guide ~63
The layout-format reference for Sonar screenshot sets. Call this ONCE before creating or editing screenshot layouts — 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 ~178
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 a Full plan (trial counts) and an API key with the write scope.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | number|null | – | Sensitivity threshold (meaning depends on type). Omit or null to use the per-type default. |
| type | string | yes | The alert type to subscribe to. |
No output schema declared.
No examples provided.
sonar_set_screenshot_translations ~119
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 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 ~154
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 a Full plan (trial counts) and 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_track_app ~197
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 a Full plan (trial counts) and 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: numeric track ID. Android: package name. |
No output schema declared.
No examples provided.
sonar_track_competitor ~179
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 a Full plan (trial counts) and 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: numeric track ID. Android: package name. |
No output schema declared.
No examples provided.
sonar_track_keywords ~188
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). Requires a Full plan (trial counts) and 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 ~78
WRITE tool — untrack an app and its associated tracking data in the caller's Sonar workspace. Requires a Full plan (trial counts) and 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 ~181
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). Requires a Full plan (trial counts) and 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 ~133
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 a Full plan (trial counts) and 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_screenshot ~117
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 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 ~123
Rename a screenshot set, replace its extra-locale list, and/or reorder its screens. Returns the updated set (with image data stripped). Requires 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.
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 npm package (@sonarapp/mcp).
Is the app.trysonar/sonar MCP server safe to use?
app.trysonar/sonar scores 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. 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 43 tools: sonar_app_lookup, sonar_app_search, sonar_app_aso_score, sonar_app_extract_keywords, sonar_app_reviews, and 38 more. Their descriptions and schemas cost roughly 5,512 tokens of context every time the server is loaded.
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 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the app.trysonar/sonar MCP server under?
app.trysonar/sonar declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.