{"server":"app.trysonar/sonar","count":50,"changes":[{"tool":"sonar_keyword_metrics","kind":"changed","observed_at":"2026-10-06T21:59:05.543Z","fields":["description"],"description_before":"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. Answers within about 30 seconds: a keyword that can't be computed in that time comes back as `pending` (queued on Sonar's scrape fleet, not charged, results are being cached) — call again after `retry_after_seconds` for just those keywords.","description_after":"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. Answers within about 30 seconds: a keyword that can't be computed in that time comes back as `pending` (queued on Sonar's scrape fleet, not charged, results are being cached) — call again after `retry_after_seconds` for just those keywords. Each row carries `measured_at` (when difficulty was measured) and `popularity_measured_at` (when the popularity value was measured — can be older), both ISO 8601 UTC. `stale: false` means both are under 7 days old; `stale: true` rows are real but older data (refreshed in the background) — check the timestamps when freshness matters.","description_similarity":0.706,"before_hash":"db27a5ff0b2e8e133bdb5b621728f6c0","after_hash":"55b0771e3506e9aff07d4d0c3bc5ada5"},{"tool":"sonar_keyword_search","kind":"changed","observed_at":"2026-10-06T21:59:05.543Z","fields":["description"],"description_before":"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. A row with `stale: true` is a stored value older than 7 days; a related term that couldn't be computed in time comes back marked `pending` (queued, not charged) — get it later with sonar_keyword_metrics.","description_after":"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 comes back marked `pending` (queued, not charged) — get it later with sonar_keyword_metrics.","description_similarity":0.875,"before_hash":"4ee390fe2f243fa8396ae97978bf24fd","after_hash":"7a16a692d00be727995336c565e419bf"},{"tool":"sonar_set_screenshot_translations","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 authorized Sonar account or a write-scope API key.","description_after":"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.","description_similarity":0.918,"before_hash":"7b27c0b83443b7f432c0e5bd0085cd72","after_hash":"0b28677d03e787e4feecd95801ca2d92"},{"tool":"sonar_delete_screenshot","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"Delete one screen from a screenshot set. A set keeps at least one screen — deleting the last one is rejected. Requires an authorized Sonar account or a write-scope API key.","description_after":"Delete one screen from a screenshot set. A set keeps at least one screen — deleting the last one is rejected. Requires an Indie plan (trial counts) and an authorized Sonar account or a write-scope API key.","description_similarity":0.833,"before_hash":"adab5cf949cdde7abe2363ae35d07d8e","after_hash":"9336fd3003d9a97d586787870833d358"},{"tool":"sonar_update_screenshot","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 authorized Sonar account or a write-scope API key.","description_after":"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.","description_similarity":0.878,"before_hash":"d0cba3d8e885f5a4d3a49534fde6678d","after_hash":"63b0e774d347d1879d7100b4f7112b17"},{"tool":"sonar_add_screenshot","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"Append a screen to a screenshot set (at the end; reorder with sonar_update_screenshot_set). Requires an authorized Sonar account or a write-scope API key.","description_after":"Append a screen to a screenshot set (at the end; reorder with sonar_update_screenshot_set). Requires an Indie plan (trial counts) and an authorized Sonar account or a write-scope API key.","description_similarity":0.815,"before_hash":"01715cf812cfcd11a035b962ccf28f01","after_hash":"81a07f1df5ce3fd05eb4c50ddfe814bf"},{"tool":"sonar_delete_screenshot_set","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"Permanently delete a screenshot set and everything in it (screens, translations). Irreversible — confirm with the user before deleting work they may want. Requires an authorized Sonar account or a write-scope API key.","description_after":"Permanently delete a screenshot set and everything in it (screens, translations). Irreversible — confirm with the user before deleting work they may want. Requires an Indie plan (trial counts) and an authorized Sonar account or a write-scope API key.","description_similarity":0.889,"before_hash":"95fe0a52a9ce52e424a94732ed7fb992","after_hash":"f2069e780b27c16172734d8c27c7c50f"},{"tool":"sonar_update_screenshot_set","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"Rename a screenshot set, replace its extra-locale list, and/or reorder its screens. Returns the updated set (with image data stripped). Requires an authorized Sonar account or a write-scope API key.","description_after":"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.","description_similarity":0.879,"before_hash":"e1daefed4ee284b434c032d7bc3244f3","after_hash":"99246a8518838ac09c38ef1f89dbfd09"},{"tool":"sonar_get_screenshot_set","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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.","description_after":"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. Requires an Indie plan (trial counts).","description_similarity":0.838,"before_hash":"7e4f99eaa35a0a726981f5a97adcdf7c","after_hash":"90b88fdf219e0157c4e93b8849c13462"},{"tool":"sonar_create_screenshot_set","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 an authorized Sonar account or a write-scope API key.","description_after":"Create an app-store screenshot set for a product, from your own `screens` layouts or a built-in template. The layout JSON format and template ids are documented by sonar_screenshot_layout_guide. The set is immediately visible/editable for humans in the Screenshot Studio (studio_url in the response). Requires an Indie plan (trial counts) and an authorized Sonar account or a write-scope API key.","description_similarity":0.585,"before_hash":"a718cdaa9cc6e182e826ca58947ec85f","after_hash":"e9a2343a08be1b52a75d5ab41a73014d"},{"tool":"sonar_list_screenshot_sets","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"List a product's app-store screenshot sets (metadata only: store, device size, locales, studio_url). Use sonar_get_screenshot_set for full layouts.","description_after":"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).","description_similarity":0.786,"before_hash":"e46a01baf0c6b9b97dfce41d982427b3","after_hash":"110009e6c01dfea95f8fe5ce3d6779ee"},{"tool":"sonar_screenshot_devices","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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.","description_after":"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).","description_similarity":0.653,"before_hash":"80ff13f64bba74ac3823293b677832ce","after_hash":"84ba6c2a3b3a14e7761982bc56792e17"},{"tool":"sonar_screenshot_layout_guide","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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.","description_after":"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.","description_similarity":0.651,"before_hash":"7f3dc7595b7e2ad98f84a5fde3d5dae9","after_hash":"690785a481585d06681d15e5f64779cc"},{"tool":"sonar_set_alert","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"bc977d2d14643d33ac742af98c8ba35e","after_hash":"9b10894f4b13364c5c6ac514a711e5e3"},{"tool":"sonar_remove_competitor","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"WRITE tool — remove a competitor from a product in the caller's Sonar workspace. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_after":"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.","description_similarity":0.574,"before_hash":"02c189960a67d5c1f86e71584d09f54f","after_hash":"6e11d6d1f5938627f9ec039fac056d79"},{"tool":"sonar_delete_product","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"WRITE tool — delete a product and untrack its apps in the caller's Sonar workspace. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_after":"WRITE tool — delete a product in the caller's Sonar workspace and untrack every app linked to it, with their tracked keywords, discovered keywords, and competitor links. The product's screenshot sets are deleted too. Shared store data (app metadata, snapshots, rank history) is not deleted. Returns { id, deleted, untracked_apps }. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_similarity":0.482,"before_hash":"c4b08ddacb0b162c3127ef13edb8c624","after_hash":"3396e5eb9dd9c2858503299970d927f3"},{"tool":"sonar_untrack_app","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"WRITE tool — untrack an app and its associated tracking data in the caller's Sonar workspace. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_after":"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.","description_similarity":0.394,"before_hash":"0fb8e4ebd350e912f9a165c41eaf61c3","after_hash":"d79776d1145aebc3fe32afc5d2440986"},{"tool":"sonar_untrack_keywords","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_after":"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.","description_similarity":0.894,"before_hash":"ab220709cc212d83a1ca50236342921d","after_hash":"f0773d6f6ac4b9e4f6e3d6dc7be65c69"},{"tool":"sonar_delete_tracked_keyword","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 authorized Sonar account or an API key with the write scope.","description_after":"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). Equivalent to sonar_untrack_keywords with a single id; that tool removes several (or all) of an app's keywords in one call. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_similarity":0.761,"before_hash":"8c9fe92852db5c63085aac01826dd945","after_hash":"e7860e7c5f434250a20fc46ff01990de"},{"tool":"sonar_track_keywords","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_after":"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.","description_similarity":0.732,"before_hash":"6ec638d4ddaf0a9cdbf206175c91293d","after_hash":"1263eaa35b34d3f57039b87ea3129a7b"},{"tool":"sonar_track_competitor","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"e3427d69f8032b71cc4aca7a4c7374f9","after_hash":"546b56a65976587df8c9397744a84047"},{"tool":"sonar_track_app","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"ebdfb951dd0e1f7263d295655245215b","after_hash":"21e38a0278e71f9563f1b24a2199df74"},{"tool":"sonar_create_product","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description","inputSchema"],"description_before":"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 an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_after":"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. Own apps count against the plan cap (Indie 10, Agency 50; competitors are not capped) — at the cap the call fails with a 403 plan_limit error. Requires an Indie plan (trial counts) and an authorized Sonar account or an API key with the write scope.","description_similarity":0.723,"before_hash":"67b5dc6dfc80509d53b63eefd2e3a845","after_hash":"5e586ef3f9abb6414419f8269c1fa2fd"},{"tool":"sonar_discovered_keywords","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 relevance, and an opportunity score (0-100, best first). This is Sonar's \"what should I track next\" answer: read it, pick the winners, then track them with sonar_track_keywords. Requires an Indie plan (trial counts).","description_after":"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 relevance, and an opportunity score (0-100, best first). This is Sonar's \"what should I track next\" answer; rows can be tracked with sonar_track_keywords. Requires an Indie plan (trial counts).","description_similarity":0.862,"before_hash":"515358dfa0c943676445c0f80c2801ef","after_hash":"e57a1d3f2ea5600818d89ff8cdc5ce19"},{"tool":"sonar_app_overview","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 and drops, the rank-distribution trend, and the actionable opportunity list (near_page_one / top_three_push / easy_target). Read this FIRST when asked how an app is doing — it's the same numbers the dashboard renders, so you don't need to recompute anything from raw rank history. Requires an Indie plan (trial counts).","description_after":"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 and drops, the rank-distribution trend, and the actionable opportunity list (near_page_one / top_three_push / easy_target). Use it when asked how an app is doing: these are the same numbers the dashboard renders, already computed from rank history. Requires an Indie plan (trial counts).","description_similarity":0.8,"before_hash":"d3961be2e1573167ef5a14293c559734","after_hash":"29d7625885739c9271d9a895c12cbaaa"},{"tool":"sonar_list_products","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"List your products with their linked store versions and competitor counts. Use it to discover product/app UUIDs. Requires an Indie plan (trial counts).","description_after":"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).","description_similarity":0.32,"before_hash":"b76ccf0bd71f041e2f8a63f879648de3","after_hash":"93c515876c56908c0834b4e8789cda81"},{"tool":"sonar_competitor_landscape","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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 you lead), the top gap/threat/lead rows with metrics, and the latest AI insight if one was generated (opportunity clusters, threat narratives, strengths, posture). Read this before deciding which keywords to target next. Requires an Indie plan (trial counts).","description_after":"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 you lead), the top gap/threat/lead rows with metrics, and the latest AI insight if one was generated (opportunity clusters, threat narratives, strengths, posture). Use it when choosing which keywords to target next. Requires an Indie plan (trial counts).","description_similarity":0.881,"before_hash":"6b0ed4264e32bc5bf759ee8fafd97aac","after_hash":"ceb3c22cbede3d47fdce311b429678d5"},{"tool":"sonar_app_changes","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description","inputSchema"],"description_before":"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 plan (trial counts).","description_after":"Change history for a tracked app — detected releases, metadata edits, screenshot swaps, price changes, category moves, iOS product page header swaps (`header`: data.action added/changed/removed + header artwork) and newly listed iOS In-App Events (`in_app_event`: title, kind, dates), newest first. Useful for correlating rank movements with what the app (or a competitor) changed. Requires an Indie plan (trial counts).","description_similarity":0.673,"before_hash":"490a8f1e762db7ea4dbb22f25fcfb6bc","after_hash":"369afdde1dbbc51c06825609027dd5ff"},{"tool":"sonar_top_charts","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"aa806135534ff592f6bb072fe3ca38fc","after_hash":"74cb67b66ef61fee7b7775f71578ccc7"},{"tool":"sonar_keyword_suggestions","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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). 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.","description_after":"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.","description_similarity":0.805,"before_hash":"e684e8254884fa133e8007aedbd88ebb","after_hash":"5fb0122353974a948a367847c99bdb52"},{"tool":"sonar_keyword_search","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description"],"description_before":"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. Answers within about 30 seconds; a related term that couldn't be computed in time comes back marked `pending` (queued, not charged) — get it later with sonar_keyword_metrics.","description_after":"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. A row with `stale: true` is a stored value older than 7 days; a related term that couldn't be computed in time comes back marked `pending` (queued, not charged) — get it later with sonar_keyword_metrics.","description_similarity":0.57,"before_hash":"6e108fd9f8ee7a46d6fbdb3bf1515d63","after_hash":"4ee390fe2f243fa8396ae97978bf24fd"},{"tool":"sonar_app_revenue","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description","inputSchema"],"description_before":"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.","description_after":"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. The figure is a model estimate, not reported revenue; the confidence grade is the part that says how far to trust it. Needs a Sonar API key or connected account (1 credit per call on prepaid API credits); not part of the free tier.","description_similarity":0.475,"before_hash":"d78fac7dd82f19afbd626cc6219609b7","after_hash":"465d3f12f6f332acc6568967b1aded27"},{"tool":"sonar_app_reviews","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["description","inputSchema"],"description_before":"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. 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.","description_after":"Fetch user reviews for any app, live from the store (up to ~500 of the most recent or most helpful for the country). The star-rating filters and `limit` apply to that fetched window, so a narrow filter on a small app can return few or no reviews. Useful for sentiment analysis, feature-request mining, and competitive research; for an already-summarized view of a tracked app, sonar_review_insights returns themed AI analysis instead. Needs a Sonar API key or connected account (1 credit per call on prepaid API credits); not part of the free tier. 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.","description_similarity":0.5,"before_hash":"a657fef824d2ca88358d49ba36aa8722","after_hash":"44b9c8134a064faca2ee5419aa13981b"},{"tool":"sonar_app_extract_keywords","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"4b6a82558195845e333e6a0cf9fc6894","after_hash":"a03b8e78f75ce2fe69e2ee4992f330c2"},{"tool":"sonar_app_aso_score","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"c3290d3b5a2d0416df750ae419024e86","after_hash":"f3f8974bc2eb2d1022a8dbd114cc3713"},{"tool":"sonar_app_lookup","kind":"changed","observed_at":"2026-10-06T16:14:09.427Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"12926942e278b065a70589a6167e000c","after_hash":"f92738ecebc80362149ed3f9c45d5617"},{"tool":"sonar_top_charts","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["description","inputSchema"],"description_before":"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). Works without an API key (free tier, limited daily use per IP).","description_after":"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. Works without an API key (free tier, limited daily use per IP).","description_similarity":0.779,"before_hash":"f82acb782bfeefafe2fd3599c185592f","after_hash":"aa806135534ff592f6bb072fe3ca38fc"},{"tool":"sonar_keyword_suggestions","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["description","inputSchema"],"description_before":"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).","description_after":"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). 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.","description_similarity":0.645,"before_hash":"0ccac6816196e6ab5c89c1fd08f21bfa","after_hash":"e684e8254884fa133e8007aedbd88ebb"},{"tool":"sonar_keyword_metrics","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["description","inputSchema"],"description_before":"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. A keyword the API cannot compute right away comes back as `pending` (queued on the scrape fleet, not charged) — this tool already waits and re-checks briefly; if it is still pending, call again after `retry_after_seconds`.","description_after":"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. Answers within about 30 seconds: a keyword that can't be computed in that time comes back as `pending` (queued on Sonar's scrape fleet, not charged, results are being cached) — call again after `retry_after_seconds` for just those keywords.","description_similarity":0.674,"before_hash":"7818e7627442c692de70606be22ae147","after_hash":"db27a5ff0b2e8e133bdb5b621728f6c0"},{"tool":"sonar_keyword_search","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["description","inputSchema"],"description_before":"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.","description_after":"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. Answers within about 30 seconds; a related term that couldn't be computed in time comes back marked `pending` (queued, not charged) — get it later with sonar_keyword_metrics.","description_similarity":0.509,"before_hash":"99c437811b4c5782fe1ede57971939b1","after_hash":"6e108fd9f8ee7a46d6fbdb3bf1515d63"},{"tool":"sonar_app_revenue","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"73ba66699a4efb5512d70855803970af","after_hash":"d78fac7dd82f19afbd626cc6219609b7"},{"tool":"sonar_app_reviews","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["description","inputSchema"],"description_before":"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.","description_after":"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. 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.","description_similarity":0.446,"before_hash":"304b6d20784cb50ba4ae50f4511b3c4e","after_hash":"a657fef824d2ca88358d49ba36aa8722"},{"tool":"sonar_app_extract_keywords","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"418918dec13787363b86938bccfa21bf","after_hash":"4b6a82558195845e333e6a0cf9fc6894"},{"tool":"sonar_app_aso_score","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"749006fc0ea985e782db7d29e9a0edfc","after_hash":"c3290d3b5a2d0416df750ae419024e86"},{"tool":"sonar_app_search","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["description","inputSchema"],"description_before":"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).","description_after":"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). 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.","description_similarity":0.548,"before_hash":"f03d49788b41396e905e4c99f8de858c","after_hash":"976a7ea144b6cc571dbf73601155f231"},{"tool":"sonar_app_lookup","kind":"changed","observed_at":"2026-10-01T21:49:15.858Z","fields":["description","inputSchema"],"description_before":"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).","description_after":"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). 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.","description_similarity":0.532,"before_hash":"7bcea92de675e1c23e107939816d013b","after_hash":"12926942e278b065a70589a6167e000c"},{"tool":"sonar_app_engagement","kind":"added","observed_at":"2026-10-01T15:57:44.842Z","fields":[],"description_before":null,"description_after":"App Store Connect App Analytics for one of your own iOS apps: the impressions → product page views → downloads funnel with conversion rates (`page_view_rate`, `download_rate`) and App Store search share, impressions by source (App Store search, browse, app referrer, web referrer…), plus daily installs, deletions and sessions. Impressions follow App Store Connect's definition and INCLUDE product page views, so totals reconcile with ASC. Downloads come from the Sales report. Same numbers as the Engagement page. iOS only. Requires the Agency plan (403 on other plans) AND an App Store Connect connection with an Admin-role key (`key_lacks_analytics` otherwise); Apple delivers the first analytics 24-48 hours after connecting (`pending`). Always check `status`: anything other than `ready` (not_connected, not_ios, app_not_in_account, pending, key_lacks_analytics) means there's no data and `message` says how to fix it — never read an empty series as zero. Days Apple hasn't reported yet have `reported: false` and null metrics.","description_similarity":null,"before_hash":null,"after_hash":"14dfeddc219cd8f77dab1d32fa18a961"},{"tool":"sonar_app_sales","kind":"added","observed_at":"2026-10-01T15:57:44.842Z","fields":[],"description_before":null,"description_after":"App Store Connect sales for one of your own iOS apps: daily first-time downloads, redownloads, in-app purchase units and approximate USD proceeds (`proceeds_usd_approx`, converted with a static FX table — present it as approximate), window totals, and a per-country breakdown sorted by downloads. Same numbers as the Performance page. iOS only. Requires the Agency plan (403 on other plans) AND an App Store Connect connection at /settings/connections. Always check `status`: anything other than `ready` (not_connected, not_ios, app_not_in_account, pending, key_lacks_analytics) means there's no data and `message` says how to fix it — never read an empty series as zero. Days Apple hasn't reported yet have `reported: false` and null metrics.","description_similarity":null,"before_hash":null,"after_hash":"cee0a4d8bcd6cda08a9bcae16c22937e"},{"tool":"sonar_set_alert","kind":"changed","observed_at":"2026-09-25T22:09:16.828Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"5e049f897df2e1f88088c96d3a5c4607","after_hash":"bc977d2d14643d33ac742af98c8ba35e"},{"tool":"sonar_alert_events","kind":"changed","observed_at":"2026-09-25T22:09:16.828Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"c50b9824059e04d524ae6b3ca5cf496f","after_hash":"13491162ab9fb25156de9d708a5f88f1"}],"next_before":null,"next_actions":[]}