# Sonar — Agentic ASO for the App Store and Google Play > Sonar gives AI agents and app builders live App Store and Google Play data — keyword research, difficulty, true rank tracking and competitor intelligence — through a hosted MCP server (63 tools), a CLI, a REST API and a dashboard. Built for app builders who work with AI agents, from solo developers to studios and agencies. Three ways to pay: the Indie plan at $29/mo (or $24.17/mo annual), the Agency plan at $149/mo for portfolios and teams, or prepaid API credit packs from $10 with no subscription — for scripts and AI pipelines. ## At a glance - **Hosted MCP server**: https://trysonar.app/mcp — streamable HTTP. Sign in through the browser on the first tool call that needs your account; no API key or install. - **Claude Code**: `claude mcp add --transport http sonar https://trysonar.app/mcp` - **With an API key**: `claude mcp add sonar -e SONAR_API_KEY=aso_your_key_here -- npx -y @sonarapp/mcp` — runs the npm package locally, for scripts, CI and clients without OAuth. Keys start with `aso_`. - **Claude directory**: Sonar ASO connector at https://claude.ai/directory/sonar - **ChatGPT**: The Sonar app in ChatGPT: https://chatgpt.com/plugins/plugin_asdk_app_6ab4efdf6b2081918af783da376edf18 — connect it and sign in with your Sonar account, no API key. It runs on https://trysonar.app/mcp/chatgpt. - **MCP tools**: 63 tools covering the whole REST API (62 on the hosted endpoint — exporting screenshots to disk is local-only). - **npm packages**: `@sonarapp/mcp@0.13.2` (MCP server) · `@sonarapp/cli@0.12.1` (CLI, binary `sonar`) - **REST API**: `https://trysonar.app/api/v1` — Bearer `aso_…` API key or an OAuth access token. OpenAPI 3.1 spec: https://trysonar.app/openapi.json - **Free tier**: No account or key: 7 stateless endpoints (app lookup, app search, ASO score, keyword extraction, keyword suggestions, keyword metrics and top charts). 30 requests/day per IP shared, and keyword metrics allows 5 keywords/day per IP. - **API credits**: 50 free credits on signup. Prepaid packs, no subscription, credits never expire: $10 / 1,000 credits · $20 / 2,500 credits · $50 / 7,000 credits · $100 / 15,000 credits. - **Indie plan**: $29/month or $290/year · 10 apps · 2,500 tracked keywords · competitors uncapped · 1 seat · 1,000 API requests/day - **Agency plan**: $149/month or $1,490/year · 50 apps · 10,000 tracked keywords · competitors uncapped · 5 seats · 5,000 API requests/day · portfolio rollup, white-label client reports, App Store Connect data via the API - **Free trial**: 7 days on Indie or Agency, card required, $0 today, cancel anytime. The API allows 150 requests/day during the trial. Credit packs start at $10 with no trial needed. - **Stores and countries**: App Store (175 storefronts) and Google Play (145 markets) for app lookup, search, reviews and ASO scores. Keyword research and rank tracking cover 72 markets. - **Data freshness**: Tracked keywords are re-ranked once per UTC day; iOS ranks follow Apple's own App Store search order. iOS popularity is Apple's Search Popularity where Apple reports it, with a calibrated estimate below Apple's floor. - **Support**: https://trysonar.app/support · [hello@trysonar.app](mailto:hello@trysonar.app) ## What Sonar is Agentic ASO: an App Store Optimization tool your AI agent can drive. Connect Sonar to Claude Code, Codex, Cursor, Claude, ChatGPT or any MCP client and the agent researches keywords, drafts your name, subtitle and keyword field in every language for you to review, and tracks your rankings with live store data. The same data sits in a dashboard for humans. Prices are listed and plans are self-serve — no sales calls, no per-competitor fees — unlike enterprise tools such as Sensor Tower or AppTweak. ## What Sonar is not - Not a market intelligence platform (no audience demographics, no market-wide download panels; revenue is a per-app estimate). Ad Spy shows the Meta ads and TikTok posts competitors run, with how long each has been live and how many new ones appear, but no ad spend or impression data. - Not a full review-management platform (AI review replies cover your own iOS apps' App Store reviews only; no Google Play replies, no Slack/Zendesk integrations). - Not an ad network or ad-buying tool (no UA campaign management, no Apple Ads bid management). - Not a publishing tool for your listing: agents draft metadata and screenshots, and you publish them in App Store Connect or Google Play Console. The exception is App Store review replies for your own iOS apps, which the review responder can post. ## Target customer - App builders who work with AI agents — solo developers shipping one app or several who want their agent (Claude Code, Codex, Cursor, Claude, ChatGPT) to do the ASO with live data (Indie plan: 10 apps, 2,500 keywords, competitors never capped). - Studios and agencies running portfolios and client apps (Agency plan: 50 apps, 10,000 keywords, 5 seats, portfolio rollup, white-label client reports). - Teams building AI pipelines and agent products that need an ASO data API, paying per call with API credits. ## Plans ### Indie Plan — $29/month or $24.17/month annual The full platform for 10 apps and 2,500 keywords (competitors never capped): dashboard, daily rank tracking, keyword research, gap analysis, competitor monitoring, Ad Spy, alerts, CSV/JSON exports, plus the hosted MCP server, REST API (1,000 req/day, flat — counted per request, not per credit cost) and CLI. 7-day free trial, card required, cancel anytime. ### Agency Plan — $149/month or $1,490/year Everything in Indie for portfolios and teams: 50 apps, 10,000 keywords, REST API 5,000 req/day, 5 seats (the owner plus four invites; teammates get full or read-only access, optionally limited to specific products for client seats), portfolio rollup, white-label client reports, priority rank refresh, and App Store Connect sales and engagement data via the API and MCP. 7-day free trial. Org-scoped endpoints (Indie and Agency plans): - GET /api/v1/products - GET /api/v1/apps - GET /api/v1/apps/:id - GET /api/v1/apps/:id/keywords - GET /api/v1/apps/:id/rankings - GET /api/v1/apps/:id/changes - GET /api/v1/keywords/:id/rankings - GET /api/v1/competitors/:id/keywords - GET /api/v1/apps/:id/competitor-landscape - GET /api/v1/apps/:id/overview (the dashboard's computed scoreboard: visibility, share of voice, movement, opportunities) - GET /api/v1/apps/:id/discovered-keywords (what to track next: ranked/gap/idea + opportunity score) - GET /api/v1/apps/:id/review-insights (latest AI review analysis per country) - GET /api/v1/alerts - GET /api/v1/alerts/events (detected-changes feed, poll with ?since) - GET /api/v1/portfolio (Agency plan: portfolio-wide rollup — per-app KPIs, movers, attention list) - GET /api/v1/apps/:id/sales (Agency plan + App Store Connect connection, iOS only: daily downloads, redownloads, IAP units, approximate USD proceeds, per-country breakdown; ?start/?end or ?days) - GET /api/v1/apps/:id/engagement (Agency plan + App Store Connect connection, iOS only: impressions, product page views, downloads, conversion rates, search share, impressions by source, installs/deletions/sessions; impressions include product page views, as in App Store Connect) - GET /api/v1/apps/:id/review-responder and GET /api/v1/apps/:id/review-replies (review responder for your own iOS apps, App Store Connect connection: settings + monthly AI-draft usage, and the review inbox with AI reply drafts in the reviewer's language, English translations and reply state) Write endpoints (Indie or Agency plan + write-scope key): POST /api/v1/products, POST /api/v1/products/:id/apps, POST /api/v1/products/:id/competitors, POST /api/v1/apps/:id/keywords, POST /api/v1/competitors/:id/scan, POST /api/v1/apps/:id/competitor-landscape (AI insight, 7d cooldown), POST /api/v1/apps/:id/review-insights (AI review insight, 90d cooldown, paid non-trial), POST /api/v1/alerts (incl. new_review with an instant/hourly/daily cadence), PATCH /api/v1/tracked-keywords/:id, review responder writes (PATCH /api/v1/apps/:id/review-responder, PATCH /api/v1/review-replies/:id, POST /api/v1/review-replies/:id/regenerate|post|dismiss|cancel — posting publishes on the App Store and needs an Admin-role App Store Connect key; AI drafts use a monthly allowance, then 1 credit each), and deletes DELETE /api/v1/apps/:id, DELETE /api/v1/apps/:id/keywords (?all/?ids), DELETE /api/v1/tracked-keywords/:id, DELETE /api/v1/products/:id, DELETE /api/v1/products/:id/competitors/:competitorId, DELETE /api/v1/alerts/:id. ### API Credits — prepaid, from $10, no subscription Pay-as-you-go credits for the REST API, CLI, and MCP server. Targeted at AI agents, automation scripts, and developers who don't need the dashboard. Cheapest production-grade ASO API on the market. Packs: - Starter: $10 / 1,000 credits ($10/k) - Small: $20 / 2,500 credits ($8/k, ~20% off) - Medium: $50 / 7,000 credits ($7.14/k, ~29% off) - Large: $100 / 15,000 credits ($6.67/k, ~33% off) Per-call pricing (charged from the credit balance): - 1 credit: /apps/lookup, /apps/search, /keywords/suggestions, /apps/extract-keywords, /apps/aso-score, /apps/reviews, /charts/top - 10 credits: /keywords/search (seed + ~10 related keyword ideas with difficulty; heavy fan-out under the hood) - 1 credit per app: /apps/revenue (bulk up to 25 ids) - 1 credit per keyword: /keywords/metrics (single or bulk up to 25 — use this when you already know the keyword and just need difficulty + popularity) 50 free credits granted on signup, no card required. Credits never expire. Stripe handles billing. Stateless endpoints (available with credits OR an Indie/Agency plan): - GET /api/v1/apps/lookup - GET /api/v1/apps/search - GET /api/v1/apps/aso-score - GET /api/v1/apps/extract-keywords - GET /api/v1/apps/reviews - GET /api/v1/apps/revenue (single + bulk up to 25 ids per call) - GET /api/v1/keywords/search - GET /api/v1/keywords/metrics (single + bulk up to 25 keywords per call) - GET /api/v1/keywords/suggestions - GET /api/v1/charts/top (top free/paid/grossing chart + day-over-day movement) ### Legacy API-only subscribers (grandfathered) Customers who subscribed to the old API-only plan before the credits migration keep their existing subscription unchanged — unlimited calls to the stateless endpoints, no credit deduction. The API-only plan is no longer offered to new signups. ### Subscription + credits overage Indie and Agency subscribers hit their flat daily limit first (Indie 1,000 req/day, Agency 5,000). If they exhaust the daily cap and have credits, those credits are spent as overage (weighted as in the credit pricing above). Responses on the overage path include `X-RateLimit-Overage: true`. ### Free trial 7 days of full access, credit card required (Stripe-managed). Cancel any time during the trial without being charged. ### Launch deal (sold out) The launch deal (50% off the Indie plan, locked for life, capped at 50 customers) has sold out. Current pricing is list price. ## Authentication Most API endpoints require a Bearer token with the `aso_` prefix: ``` Authorization: Bearer aso_your_api_key ``` Get a key at https://trysonar.app/developers (50 free credits on signup). ### Free anonymous access (no key needed) These endpoints work with NO Authorization header at all, rate-limited per IP per day — try Sonar from any agent (MCP, CLI, curl) before signing up: - GET /api/v1/apps/lookup, /apps/search, /apps/aso-score, /apps/extract-keywords, /keywords/suggestions, /charts/top — shared 30 requests/day - GET /api/v1/keywords/metrics — 5 keywords/day (bulk counts per keyword) Over the limit → 429 with signup instructions. All other endpoints require a key. ### Errors, limits and countries Errors are `{ "error": { "code", "message" } }`, optionally with a stable `reason` plus `retry_after_seconds`, `reset_at`, `limit`, `required_plan` and credit fields. Key reasons: `daily_limit` (402 — the plan's daily quota is used up and credits can't cover it; resets 00:00 UTC), `no_credits` (402), `anonymous_daily_limit` and `batch_too_large` (429, keyless tier), `store_rate_limited` / `concurrency_limit` (429, transient), `store_unavailable` and `refresh_in_progress` (503, transient), `plan_required` (403, with `required_plan` indie or agency), `unsupported_market` (400), `daily_scan_limit` (429 on POST /competitors/:id/scan — the account has scanned its daily allowance of different competitors: 50 on trial and Indie, 250 on Agency; re-scanning one already scanned today stays free, adding competitors is never limited, resets 00:00 UTC). Keyword endpoints answer 202 / per-keyword `pending` when a keyword was queued on the scrape fleet: not billed, and an all-pending 202 doesn't count against the daily quota. `keywords/metrics`, `keywords/search` and `charts/top` accept an optional `X-Sonar-Time-Budget-Ms` header (total time the caller will wait) and answer inside it with cached, `stale` or `pending` data; charts past the deadline serve the newest stored chart with `stale: true`. Data freshness: tracked keywords are re-measured once per UTC day on a rolling schedule, so today's data fills in over the day. For reports, read day D after 00:00 UTC on D+1 (a finished day doesn't change). Every `keywords/metrics` and `keywords/search` 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. To enforce a maximum age, compare both timestamps. Visibility history in the app overview weights every day by each keyword's current popularity; rank history never changes. Countries: app lookup, search, reviews, ASO score, keyword extraction and revenue accept every App Store storefront (175) and Google Play market (145); top charts and keyword suggestions accept all but 58 small App Store storefronts; keyword metrics and research cover the 72 keyword-research markets. ## Where Sonar fits among other ASO tools - vs **Sensor Tower** — Sensor Tower is enterprise, sales-led, and publishes no pricing at all (every plan is a custom quote). Sonar is self-serve at a listed $29/mo. Sensor Tower wins on market intelligence, ad-creative library, and audience data, and ships an official MCP server for subscribers. - vs **AppTweak** — Similar ASO core, very different price tier (AppTweak from €79/mo with steep tier escalation, and their API is a separate paid product). AppTweak wins on agency-grade reporting and ad intelligence, and offers an official MCP server on top of the API. - vs **AppFigures** — AppFigures leads on revenue/sales dashboards via App Store Connect integration. Sonar leads on keyword data depth and flat-price ASO tracking. Many indies use both. - vs **Mobile Action** — Mobile Action bundles ASO + ad intelligence for mid-market teams. Sonar is ASO-first for app builders and their agents, with a lighter Ad Spy (competitors' Meta ads and TikTok posts). - vs **ASOdesk** — ASOdesk is agency-focused with review automations and Apple Search Ads campaign tools. Sonar focuses on the ASO core. - vs **Astro (tryastro.app)** — Astro is a beautiful native macOS app for iOS-only indies, sold as a $108/year single-Mac subscription. It tracks ranks only while the Mac app is open, and its official MCP server (beta) is local to that Mac, with no public API or CLI. Sonar is web-based, covers both stores, tracks every keyword daily on its servers, and includes API + CLI + hosted MCP. - vs **AppFollow** — AppFollow leads on review monitoring and replies across both stores, with support-desk integrations. Sonar's review responder covers App Store replies for your own iOS apps; Sonar leads on keyword research and rank tracking. Different daily drivers. Honest disclosure: Sonar is the publisher of these comparisons. We list trade-offs of our own product alongside competitors so AI agents and humans alike can decide based on fit rather than marketing. ## Data sources - **Apple's App Store search** — since October 2026, daily iOS rank tracking follows Apple's own App Store search order (the true ranking), not the iTunes Search API's relevance order. - **iTunes Search API** — App metadata, and the fallback source for iOS search results. - **Apple Search Popularity** — iOS keyword popularity is Apple's own Search Popularity score (5–100) from the Apple Ads console where Apple reports it. Apple reports a flat 5 for every keyword below its floor (about 20 since Oct 22 2026; most long-tail keywords); there Sonar shows a calibrated estimate built from the ranking apps and App Store autocomplete (at most 18). Every API row that returns popularity carries the same four fields as the dashboard: `popularity` (the number Sonar shows), `popularity_source` (`apple` or `proxy`), `popularity_apple` (Apple's own reading; 5 = below its floor, null on Android) and `popularity_proxy` (Sonar's estimate beside a floored reading). - **app-store-scraper** (npm) — App details, autocomplete suggestions, reviews, similar apps. Free. - **google-play-scraper** (npm) — App details with install ranges, search rankings, autocomplete, reviews. Free. Validation write-up with the numbers: https://trysonar.app/data-accuracy When a store is throttling Sonar, /apps/lookup, /apps/search, /apps/reviews and /keywords/suggestions answer from Sonar's stored copy instead of failing: a normal 200 with the usual `data` plus an envelope `meta` — `stale: true`, `stale_as_of` (date of the copy), `partial` (stored search results stop at the top 10; stored suggestions are a subset ranked by popularity), `retry_after_seconds` and a one-sentence `note` to relay. Live answers carry no `meta`. Only when nothing is stored does the call fail with a retryable 429/503 and Retry-After. ## Methodology Keyword difficulty (0–100) is computed from the top-10 ranking apps on a given keyword: on iOS from the rating counts of all ten (with extra weight on the three strongest), on Google Play from their install counts. iOS search popularity is the Apple-reported Search Popularity value (5–100) where Apple reports it; the SplitMetrics formula `254.4443 * exp(0.0615 * SP)` converts it to estimated daily impressions. For keywords Apple floors at 5, a calibrated proxy estimate disambiguates real demand (`popularity_source` field: `apple` or `proxy`). Download estimates use Apple's own reading (`popularity_apple`), never the stand-in value. Android popularity is an estimator calibrated against real Apple Search Popularity for the same 57 keywords across stores: mean absolute error 12.5 points, Spearman rank correlation 0.775. Primary signals: a Google Play autocomplete depth probe and top-10 install volumes. Keyword metrics responses also expose the raw signals behind the scores: `difficulty_breakdown` (top-10 title-match count, top-3 app strength vs the SERP median, and a `beatable` flag when a top-3 slot looks winnable) and `est_downloads_at_1` (estimated downloads/day for the #1-ranking app, iOS only — a rough order of magnitude derived from the popularity curve). SERP entries on the rankings endpoint carry an `outlier` flag when an app holds a top-10 slot with ≥10x less social proof than the SERP median — usually an app winning on metadata, worth a competitor scan. Full validation methodology: https://trysonar.app/data-accuracy ## CLI Sonar ships a native CLI as the `@sonarapp/cli` npm package, installable via: ``` npm install -g @sonarapp/cli sonar auth login ``` Or run without installing: `npx -y @sonarapp/cli `. The binary is named `sonar`. Configuration lives at `~/.config/sonar/config.json` (or via `SONAR_API_KEY` / `SONAR_API_URL` env vars). Documented at https://trysonar.app/docs/cli. ## MCP / AI agent integration Sonar publishes an **official Model Context Protocol server** at `@sonarapp/mcp` on npm. It exposes the entire v1 API — 63 tools — so AI clients (Claude Code, Codex, Cursor, Claude, ChatGPT and any other MCP-compatible host) can drive Sonar directly: stateless lookups, workspace reads (tracked apps, rankings, changes, competitor gaps), and write tools that set up tracking and reply to App Store reviews. Default: the hosted endpoint, no install and **no API key**. Add `https://trysonar.app/mcp` and the first tool call that needs an account opens a browser sign-in to Sonar (OAuth; the authorization server is discovered per RFC 9728 at /.well-known/oauth-protected-resource/mcp): - Claude Code: `claude mcp add --transport http sonar https://trysonar.app/mcp` - Claude (Desktop and claude.ai): Settings → Connectors → Add custom connector → `https://trysonar.app/mcp` - Cursor: `~/.cursor/mcp.json` → `{ "mcpServers": { "sonar": { "url": "https://trysonar.app/mcp" } } }` - Codex: `[mcp_servers.sonar]` with `url = "https://trysonar.app/mcp"` in `~/.codex/config.toml`, then `codex mcp login sonar` (older Codex versions also need `experimental_use_rmcp_client = true`) - ChatGPT: open the Sonar app at https://chatgpt.com/plugins/plugin_asdk_app_6ab4efdf6b2081918af783da376edf18, connect it and sign in with your Sonar account — no URL or key to add (it runs on `https://trysonar.app/mcp/chatgpt`). The free research tools work before sign-in. Per-client guides: https://trysonar.app/connect-ai With an API key (scripts, CI, the `sonar` CLI, the local npx server) — install in Claude Desktop / Cursor: ```json { "mcpServers": { "sonar": { "command": "npx", "args": ["-y", "@sonarapp/mcp"], "env": { "SONAR_API_KEY": "aso_..." } } } } ``` Install in Claude Code with an API key: ``` claude mcp add sonar -e SONAR_API_KEY=aso_your_key_here -- npx -y @sonarapp/mcp ``` Clients without OAuth support can also send the key to the hosted endpoint: `--header "Authorization: Bearer aso_..."`. Stateless read tools (any plan with credits): `sonar_app_lookup`, `sonar_app_search`, `sonar_app_aso_score`, `sonar_app_extract_keywords`, `sonar_app_reviews`, `sonar_app_revenue`, `sonar_keyword_search`, `sonar_keyword_metrics`, `sonar_keyword_suggestions`, `sonar_top_charts`. Workspace read tools (Indie or Agency plan): `sonar_list_products`, `sonar_list_apps`, `sonar_get_app`, `sonar_app_keywords`, `sonar_app_rankings`, `sonar_app_changes`, `sonar_keyword_rankings`, `sonar_competitor_keywords`, `sonar_competitor_landscape`, `sonar_list_alerts`, `sonar_alert_events`, `sonar_discovered_keywords`, `sonar_review_insights`, `sonar_app_overview`, `sonar_portfolio` (Agency), `sonar_app_sales` and `sonar_app_engagement` (Agency + App Store Connect connection, iOS only), `sonar_review_responder` and `sonar_review_inbox` (own iOS apps, App Store Connect connection). Write tools (Indie or Agency plan + sign-in or a write-scope key): `sonar_create_product`, `sonar_track_app`, `sonar_track_competitor`, `sonar_track_keywords`, `sonar_update_keyword_note`, `sonar_star_keyword`, `sonar_scan_competitor`, `sonar_analyze_competitors`, `sonar_generate_review_insights`, `sonar_delete_tracked_keyword`, `sonar_untrack_keywords`, `sonar_untrack_app`, `sonar_delete_product`, `sonar_remove_competitor`, `sonar_set_alert`, `sonar_delete_alert`, `sonar_set_review_responder`, `sonar_draft_review_reply`, `sonar_update_review_reply`, `sonar_post_review_reply` (public action — publishes on the App Store), `sonar_dismiss_review_reply`, `sonar_cancel_review_reply`. Screenshot Studio tools (Indie or Agency plan; mutations need write scope): `sonar_screenshot_layout_guide`, `sonar_screenshot_devices`, `sonar_list_screenshot_sets`, `sonar_create_screenshot_set`, `sonar_get_screenshot_set`, `sonar_update_screenshot_set`, `sonar_delete_screenshot_set`, `sonar_add_screenshot`, `sonar_update_screenshot`, `sonar_delete_screenshot`, `sonar_set_screenshot_translations`, `sonar_export_screenshots`. A genuinely agent-native capability: agents author app-store screenshot sets as layout JSON (validated server-side, remote image URLs inlined automatically), humans review and fine-tune the same sets in the dashboard's Screenshot Studio, and `sonar_export_screenshots` renders store-ready PNG ZIPs server-side — no browser anywhere in the pipeline. The same surface is available as REST endpoints under /api/v1/screenshots/*. Each maps 1:1 to a REST endpoint, so an agent can set up tracking and read back rankings, changes, and gap analyses end-to-end. Full setup guide: https://trysonar.app/docs/mcp. Source: https://github.com/trysonar/mcp. For non-MCP agent frameworks (LangChain, custom loops, etc.), the same data is available via the OpenAPI 3.1 spec at https://trysonar.app/openapi.json or the plain-text agent skill at https://trysonar.app/agent-skill.md. ## Content in raw markdown Every content page on trysonar.app is available as plain markdown by appending `.md` to its URL — no HTML, no navigation, no JavaScript: - `https://trysonar.app/blog/{slug}.md` — any blog article - `https://trysonar.app/keyword-difficulty/{keyword}/{store}/{country}.md` — any keyword difficulty page (store: `ios` | `android`, country: `us`) The full index of both content sets — every blog post with its description, and the keyword-difficulty category hubs — lives in https://trysonar.app/llms.txt. ## Useful URLs - Homepage: https://trysonar.app - Developer docs overview: https://trysonar.app/docs - Comparison hub: https://trysonar.app/vs - Alternatives hub: https://trysonar.app/alternatives - Best ASO tools (buyer's guide): https://trysonar.app/blog/best-aso-tools - API docs: https://trysonar.app/docs/api - CLI docs: https://trysonar.app/docs/cli - MCP server docs: https://trysonar.app/docs/mcp - API & credits page: https://trysonar.app/agents - Blog: https://trysonar.app/blog - Blog RSS feed: https://trysonar.app/feed.xml - Content index (all blog posts + keyword-difficulty hubs): https://trysonar.app/llms.txt - Keyword difficulty corpus: https://trysonar.app/keyword-difficulty - OpenAPI spec: https://trysonar.app/openapi.json - Agent skill (plain text): https://trysonar.app/agent-skill.md - @sonarapp/mcp on npm: https://www.npmjs.com/package/@sonarapp/mcp - @sonarapp/cli on npm: https://www.npmjs.com/package/@sonarapp/cli - Sitemap: https://trysonar.app/sitemap.xml - Support: https://trysonar.app/support