Cortex Docs

MCP server

Connect Claude, Cursor, VS Code, ChatGPT and other AI tools to your Cortex ASO workspace with the hosted MCP server.

The Cortex ASO MCP server is a hosted Model Context Protocol server that exposes your workspace data and actions to AI tools. Once connected, an assistant can read keyword ranks, reviews, alerts and ad performance, and (when you ask it to) change data such as tracked keywords or ad campaigns. Every request acts as the workspace that owns the API key.

What you need

  • The Solo plan or above. Plans without CLI/MCP access cannot create keys.
  • An Owner or Admin role in the workspace.
  • An MCP client that supports remote servers over Streamable HTTP.

Connection details

SettingValue
URLhttps://api.cortexaso.com/api/mcp
TransportStreamable HTTP
HeaderAuthorization: Bearer <YOUR_API_KEY>
Markdown doc (for AI / LLMs)/docs/llms.mdx/mcp/content.md

Create an API key

  1. Open Settings → API Keys & MCP.
  2. Select Create key and give it a name, for example the tool it is for.
  3. Copy the key immediately. It is shown once and cannot be retrieved later.

Create one key per tool so you can revoke each independently. Revoke a key at any time from the same page; the tool loses access straight away.

Set up your tool

Replace <YOUR_API_KEY> with your key in every snippet.

Claude Code

claude mcp add --transport http cortex https://api.cortexaso.com/api/mcp --header "Authorization: Bearer <YOUR_API_KEY>"

Claude Desktop

Open Settings → Developer → Edit Config and merge this into claude_desktop_config.json, then restart the app. It uses mcp-remote and requires Node.js. Other clients that only support local servers can use the same entry.

{
  "mcpServers": {
    "cortex": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.cortexaso.com/api/mcp",
        "--header",
        "Authorization: Bearer <YOUR_API_KEY>"
      ]
    }
  }
}

Cursor

Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json inside a single project.

{
  "mcpServers": {
    "cortex": {
      "url": "https://api.cortexaso.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}

VS Code

Add this to .vscode/mcp.json in your project (GitHub Copilot agent mode).

{
  "servers": {
    "cortex": {
      "type": "http",
      "url": "https://api.cortexaso.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}

ChatGPT

In ChatGPT, enable developer mode and add a custom MCP connector (Settings → Connectors; the menu name varies by plan). Enter the URL https://api.cortexaso.com/api/mcp, choose Streamable HTTP, and add the header Authorization: Bearer <YOUR_API_KEY>. Availability depends on your ChatGPT plan and workspace settings.

Other clients

Any client that supports remote MCP servers over Streamable HTTP needs these three values:

URL: https://api.cortexaso.com/api/mcp
Transport: Streamable HTTP
Header: Authorization: Bearer <YOUR_API_KEY>

Tools

The server exposes 103 tools. Write tools change data in Cortex or in a connected store or ad account. Ad and store write tools default to a dry run or preview, and only apply the change when you confirm it. Read tools never change anything.

Projects and apps

ToolTypeWhat it does
cortex_project_listReadList the organization projects (tracked apps) with their store app
cortex_project_createWriteCreate a project for an app and finish its onboarding so keyword and metadata tools can use it
cortex_project_update_marketsWriteAdd or remove storefront countries of a project
cortex_project_deleteWriteDelete a project with its markets, tracked keywords and ranking history
cortex_app_resolveReadResolve a public app on the iOS App Store or Google Play Store
cortex_app_detailsReadPublic store page of any app on the iOS App Store or Google Play in one country, including name, rating, description, screenshots and similar apps.

Keywords and rankings

ToolTypeWhat it does
cortex_keyword_searchReadSearch for keyword suggestions and autocomplete data from app stores
cortex_serp_exploreReadExplore the search engine results page (SERP) for a keyword to see which apps rank for it
cortex_keyword_listReadList tracked keywords for a project
cortex_keyword_ranksReadGet current ranking for a tracked keyword
cortex_keyword_historyReadGet historical ranking data for a tracked keyword
cortex_keyword_trackWriteTrack keywords in one storefront of a project
cortex_keyword_removeWriteStop tracking keywords by trackedKeywordId (from cortex_keyword_list)
cortex_keyword_set_statusWritePause or resume tracked keywords
cortex_rank_changesReadProject-wide keyword rank movers over a window
cortex_keyword_collect_nowWriteQueue a fresh rank scan of all tracked keywords of a project and return immediately; poll cortex_operation_status for the outcome.
cortex_operation_statusReadPoll a queued operation from cortex_keyword_collect_now or an async cortex_metadata_generate until it is queued, running, completed or failed.

Competitors

ToolTypeWhat it does
cortex_competitor_addWriteTrack competitor apps of a project by store appId or storeUrl (up to 10 per call, 20 enabled per project)
cortex_competitor_removeWriteStop tracking competitors by competitorId
cortex_competitor_listReadList the tracked competitors of a project with their store app summary (competitorId, appId, name, platform)
cortex_competitor_compareReadCompare the project app against its tracked competitors on the newest stored rank scan per keyword, including own rank and each competitor rank (null means beyond scan depth).

Metadata and store listing

ToolTypeWhat it does
cortex_metadata_draft_getReadRead the saved draft versions the Editor shows: the latest version for one storefront, or each storefront's latest version.
cortex_metadata_historyReadGet historical metadata versions for a project
cortex_listing_keywordsReadRead any public App Store or Google Play listing link and return ranked keywords from its title, subtitle or short description, and description
cortex_metadata_live_listingReadGet the live listing metadata for a project directly from the store
cortex_metadata_generateWriteGenerate marketing copy and metadata drafts
cortex_metadata_draft_saveWriteSave reviewed listing text as a new version of the draft for one market, so the Editor and the publish tools can pick it up
cortex_metadata_lintReadLint listing text against the store limits and ASO rules with no AI call and nothing saved.
cortex_metadata_publishWritePublish saved metadata drafts to the app's store listing (Google Play for Android projects, App Store for iOS projects)
cortex_release_notes_updateWriteUpdate the "what's new" release notes of one store release

Reviews

ToolTypeWhat it does
cortex_reviews_listReadList stored store reviews of a project, newest first, with the reviewer display name, storefront, developer reply and any saved AI draft.
cortex_review_replyWriteReply publicly to a stored store review (the reviewId from cortex_reviews_list; Google Play or App Store)
cortex_reviews_summaryReadSummarize stored store reviews of a project into a rating histogram, themes, complaints, praise and recommendations.

Alerts

ToolTypeWhat it does
cortex_alerts_listReadList stored alerts of a project, newest first, each with severity, status (open/resolved/dismissed), link, resolvedAt, title and message
cortex_alerts_summaryReadCount the unread alerts of a project in total and per severity (critical, warning, info)
cortex_alerts_acknowledgeWriteMark alerts of a project as read, resolved or dismissed (status)
cortex_alerts_config_getReadReturn the effective configuration of every alert type for a project, including isEnabled, thresholds, cooldownHours and channels.
cortex_alerts_config_updateWriteUpdate the configuration of one alert type for a project, including isEnabled, thresholds, delivery, cooldownHours and channels.
cortex_alerts_testWriteSend a sample instant alert e-mail for an alert type to the e-mail address of the API key creator, to verify delivery

Apple Ads

ToolTypeWhat it does
cortex_apple_ads_cannibalizationReadAnalyze cannibalization of organic installs by paid Apple Search Ads
cortex_apple_ads_cpa_simulateReadSimulate CPA (Cost Per Acquisition) feasibility against targets
cortex_apple_ads_campaignsReadList Apple Ads campaigns with performance metrics
cortex_apple_ads_keywordsReadKeyword-level Apple Ads performance (impressions, taps, installs, spend, CPA) aggregated over the last N days, live from Apple (window ends today)
cortex_apple_ads_impression_shareReadShare of voice for the project's app on Apple Ads search terms over the last N days, live from Apple.
cortex_apple_ads_adsReadAd-level Apple Ads performance over the last N days, live from Apple, for the project's app campaigns or one of them.
cortex_apple_ads_update_bidWriteAdjust keyword bid for an Apple Ads campaign
cortex_apple_ads_negative_propagationWriteMine negative keyword candidates and optionally propagate them
cortex_apple_ads_create_campaignWriteCreate an Apple Ads campaign with one ad group, optional keywords and optional custom product page
cortex_apple_ads_set_statusWritePause or resume an Apple Ads campaign or ad group
cortex_apple_ads_update_campaignWriteEdit an Apple Ads campaign: name, end date (null clears it), storefront countries (full replacement set) and daily budget
cortex_apple_ads_update_ad_groupWriteEdit an Apple Ads ad group: name, default bid, start and end dates
cortex_apple_ads_add_keywordsWriteAdd up to 100 targeting keywords to an Apple Ads ad group
cortex_apple_ads_update_assetsWritePoint an Apple Ads ad group at a custom product page, or pass productPageId null to fall back to the default product page
cortex_apple_ads_campaign_detailReadOne Apple Ads campaign of the project's app with its ad groups and targeting keywords, live from Apple
cortex_apple_ads_ad_groupsReadList the ad groups of an Apple Ads campaign of the project's app (id, name, status, default bid, dates), live from Apple
cortex_apple_ads_search_popularityReadApple search popularity (1-100, null when unknown) for up to 100 terms in one country, live from Apple Ads
cortex_apple_ads_search_termsReadStored Apple Ads search-term performance per campaign, ad group and term (impressions, taps, installs, spend, TTR, CPA) over the last N days
cortex_apple_ads_negativesReadList the negative keywords of an Apple Ads campaign and its ad groups (or one ad group), live from Apple
cortex_apple_ads_bid_recommendationsReadBid recommendations per keyword toward a target CPA, from stored search-term performance
cortex_apple_ads_keyword_opportunitiesReadConverting Apple Ads search terms not yet targeted as keywords, from stored performance over the last N days (installs and taps)
cortex_apple_ads_product_pagesReadList custom product pages for an App Store app by its adamId (live or cached)
cortex_apple_ads_add_negativesWriteAdd up to 20 negative keywords to an Apple Ads campaign, or to one of its ad groups when adGroupId is given
ToolTypeWhat it does
cortex_google_ads_cannibalizationReadAnalyze cannibalization of organic installs by paid Google Ads
cortex_google_ads_cpa_simulateReadSimulate CPA (Cost Per Acquisition) feasibility against targets
cortex_google_ads_campaignsReadList campaign id, name and status for the connected Google Ads account (no metrics; use cortex_google_ads_campaign_report for metrics)
cortex_google_ads_keywordsReadKeyword-level Google Ads performance aggregated over the last N days, live from Google.
cortex_google_ads_assetsReadAsset-level Google Ads performance over the last N days, live from Google, including type, text, field type and metrics.
cortex_google_ads_campaign_reportReadLive Google Ads campaign metrics for a date range (max 90 days), queried directly from the Google Ads API so figures match the Google Ads console
cortex_google_ads_campaign_detailReadLive detail of one Google Ads campaign: campaign, its keywords with quality score, and its assets
cortex_google_ads_negative_candidatesReadStored search terms of the last N synced days that waste spend, summed per campaign, ad group and term, as negative-keyword candidates.
cortex_google_ads_search_termsReadStored Google Ads search terms of the last N synced days (ending yesterday), aggregated per campaign, ad group and term
cortex_google_ads_ad_groupsReadLive Google Ads ad groups queried directly from the Google Ads API, optionally for one campaign and status
cortex_google_ads_negativesReadLive Google Ads negative keywords at campaign and ad group level, queried directly from the Google Ads API.
cortex_google_ads_keyword_ideasReadLive Google Ads keyword ideas for 1–20 seed phrases from Keyword Planner, with average monthly searches and competition.
cortex_google_ads_keyword_opportunitiesReadStored Google Ads search terms of the last N synced days that converted but are not yet keywords.
cortex_google_ads_adsReadLive Google Ads ad performance over the last N days ending today, queried directly from the Google Ads API, summed per ad
cortex_google_ads_budgetsReadLive Google Ads campaign budgets of one linked account, queried directly from the Google Ads API.
cortex_google_ads_conversion_actionsReadLive Google Ads conversion actions of one linked account (live or cached 1h)
cortex_google_ads_update_bidWriteExecute actions on Google Ads campaigns
cortex_google_ads_negative_propagationWriteMine negative keyword candidates and optionally propagate them
cortex_google_ads_create_campaignWriteCreate a Google App campaign with one ad group and one app ad
cortex_google_ads_set_statusWritePause or resume a Google Ads campaign or ad group
cortex_google_ads_update_campaignWriteEdit a Google Ads campaign name, end date, target countries, or target ROAS (a ratio of conversion value to spend, for example 1.5).
cortex_google_ads_recommendationWriteApply or dismiss one active Google recommendation of a campaign
cortex_google_ads_insightsReadAI-written insights for one Google Ads campaign
cortex_google_ads_breakdownReadStored Google Ads cost, CPI, conversions and share of the project's campaigns per country, network or conversion action over the last N days.
cortex_google_ads_update_ad_groupWriteEdit a Google Ads ad group: name, targetCpa (App ad groups only) or cpcBid (Search ad groups only)
cortex_google_ads_add_keywordsWriteAdd up to 100 keywords to a Google Ads Search ad group
cortex_google_ads_update_assetsWriteReplace the headlines, descriptions, images or YouTube videos of a Google App ad
cortex_google_ads_add_negativesWriteAdd up to 20 negative keywords to a Google Ads Search campaign, or to one of its ad groups when adGroupId is given

Ads recommendations and activity

ToolTypeWhat it does
cortex_ads_recommendations_listReadList open ads optimization recommendations for Apple Search Ads or Google Ads
cortex_ads_recommendation_applyWriteApply an ads recommendation or preview the changes
cortex_ads_recommendation_dismissWriteDismiss an open ads recommendation so it is not shown or evaluated again for 30 days
cortex_ads_activityReadRead the ads activity feed for Apple Search Ads or Google Ads, including actions, actor, source, diffs and 7-day evaluation.

Revenue and attribution

ToolTypeWhat it does
cortex_appsflyer_performanceReadQuery marketing attribution performance rows from AppsFlyer
cortex_organic_upliftReadDaily organic installs from AppsFlyer for one country, with listing-publish days and tracked-keyword rank moves of five or more places.
cortex_revenue_roasReadCalculate attributed ROAS and CPA per install joining ad spend with AppsFlyer attributed revenue and installs
cortex_ads_overviewReadOne view of a project's paid acquisition for a date window across Apple Ads, Google Ads, AppsFlyer and joined ROAS.
cortex_appsflyer_ltvReadPer-country cohort quality from AppsFlyer Cohort data, including installs, retention and LTV.
cortex_appsflyer_skanReadiOS SKAdNetwork installs next to AppsFlyer-attributed non-organic installs per day (modelled: true)
cortex_appsflyer_breakdownReadAppsFlyer installs, cost and revenue aggregated by adset or by ad, most installs first.

Integrations and market data

ToolTypeWhat it does
cortex_integrations_statusReadShow which integrations the organization has connected and why their data may be empty.
cortex_trending_chartsReadGet the top trending apps for a specific category and platform

The AppsFlyer and ROAS tools (cortex_appsflyer_*, cortex_organic_uplift, cortex_revenue_roas) are not available on all workspaces.

Tools that depend on an integration (Apple Ads, Google Ads, AppsFlyer, App Store Connect, Google Play) also need that integration linked to the workspace and the matching plan capability. cortex_integrations_status shows what is connected.

Example prompts

  • Which of my keywords dropped this week?
  • Summarize my latest App Store reviews and flag common complaints.
  • Draft new metadata for my app and check it for length issues.
  • Compare my rankings against my tracked competitors.
  • Show last month's Apple Ads spend, installs and CPA by campaign.

Limits

  • Requests are limited to 60 per minute per API key. Over the limit, the server answers with HTTP 429; retry after a short wait.
  • Some tools have their own caps, for example a daily cap on test alert e-mails and on store listing commits, and tracked keywords count toward your plan quota.
  • Tools that generate AI content, such as cortex_google_ads_insights with generate=true, use your workspace AI credits and daily quota.

Security

  • Anyone holding a key can act as the workspace. Keep keys secret, never commit them to a repository, and do not paste them into shared chats.
  • Revoke a key as soon as a tool no longer needs it or if it may have leaked.
  • Prefer a dedicated key per tool and per person.
  • Review the changes an assistant proposes before approving write actions, especially ad spend and store listing changes.

On this page