On this page
Docs · MCP
Connect your AI agent
Claude Code, Codex, OpenCode, Cursor and any other MCP app can run Wow Keywords for you: track apps, research keywords in every market, run the ASO audit and publish it.
A local server inside the app. No account, API key or cloud.
Apps, keywords, rank checks, the ASO audit and publishing.
Click MCP in the app’s sidebar and press Add, or paste one command.
Connect
Pick your agent. Wow Keywords needs to be installed and activated.
Claude Code
- 1
One click: in Wow Keywords click MCP in the sidebar and press Add next to it. The app writes the config and fixes it after you move the app.
- 2
Or run this once:
claude mcp add --scope user wow-keywords \ -e ELECTRON_RUN_AS_NODE=1 \ -- "/Applications/Wow Keywords.app/Contents/MacOS/Wow Keywords" \ "/Applications/Wow Keywords.app/Contents/Resources/mcp.cjs" - 3
Check:
claude mcp listshowswow-keywords. Start a new Claude Code session.
Try asking
Start a new session in your agent, then ask in plain words.
- “Which of my apps lost the most ranks since the last check?”
- “Where is my app outside the top 10 in Germany, and what would it take to get in?”
- “Brainstorm keywords for a keto calorie tracker and check them in the US.”
- “Add Japan and Korea to my app and check every keyword there.”
- “Run the ASO audit for my app and show me the three options side by side.”
How long jobs run
- Checks, brainstorms and audits run inside the app. The tool that starts one answers at once.
- The agent follows along with
wait, which returns within 50 seconds, thenstatus. It repeats until the job is done. - You can watch the same job in the Wow Keywords window, and stop it there.
audit_publishwrites to App Store Connect only when you ask. It never submits for review.
Workflows
The calls an agent makes for common jobs.
asc_apps→app_addAll→wait→overviewstore_search→app_add→waitsession_create→wait→board_getcheck_run→wait→board_getapp_context→keywords_brainstorm→wait→board_get→audit_english→wait→audit_getaudit_english→wait→audit_get→audit_choose→audit_localize→wait→audit_getnext_version→audit_publish→waitTools (54)
Open a tool for its full description and parameters.
Read
statusReadTracked apps (ids, markets), connections and recent jobs.
Tracked apps (ids, markets), connections and recent jobs. Start here.
No parameters.
overviewReadOne line per tracked entry: kind, markets, keyword count, phrases checked vs never checked, last check, audit stage (none, options, chosen, localized, published) and running jobs.
One line per tracked entry: kind, markets, keyword count, phrases checked vs never checked, last check, audit stage (none, options, chosen, localized, published) and running jobs. Use it to plan work across all apps before reading a board.
kindmine | competitor | brainstorm- Only this kind.
board_getReadThe app’s keyword grid, compact: listings, then one row per keyword (id, label, source, hidden, mean volume) with one cell per market (phrase, rank, earlier rank, volume proxy 0-100 (relevant apps in search results, not search counts), difficulty 0-100, verdict; rank null = not in the first 200; checked false = never searched).
The app’s keyword grid, compact: listings, then one row per keyword (id, label, source, hidden, mean volume) with one cell per market (phrase, rank, earlier rank, volume proxy 0-100 (relevant apps in search results, not search counts), difficulty 0-100, verdict; rank null = not in the first 200; checked false = never searched). Top 5 competitors per market and the researcher chat. Pass storefront for one market only. term_get has a cell’s top apps and history.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
storefrontstring- Storefront code, lowercase, e.g. "es". markets_list has them all.
term_getReadEverything about one keyword in one market: the phrase, rank history, volume and difficulty breakdown, and the top apps for that search (name, subtitle, ratings, whether each counts toward volume).
Everything about one keyword in one market: the phrase, rank history, volume and difficulty breakdown, and the top apps for that search (name, subtitle, ratings, whether each counts toward volume).
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
keywordIdrequiredstring- Keyword id from board_get.
storefrontrequiredstring- Storefront code, lowercase, e.g. "es". markets_list has them all.
markets_listReadEvery storefront code with its country, language and App Store Connect locales.
Every storefront code with its country, language and App Store Connect locales. main = one of the 52 stores the window offers; prefer those. size (main stores only) = estimated market: population, smartphone users and iPhone users in millions, iOS share %, GDP per person at PPP in thousand $, score 0–10 (√iPhone users × purchasing power^1.5 × access, log scale, USA = 10) and share % of all main stores, access 0–1 = share of the market that can actually buy (restriction says why; Russia and India are cut); rounded estimates, not measurements.
No parameters.
ai_statusReadWhich AI CLIs can run here (Claude Code, Codex, OpenCode, Ollama): installed, signed in, and their models with reasoning levels.
Which AI CLIs can run here (Claude Code, Codex, OpenCode, Ollama): installed, signed in, and their models with reasoning levels. Pass one as ai on AI tools, or save it with settings_save.
No parameters.
waitReadReturns status immediately when no matching job is running.
Returns status immediately when no matching job is running. Otherwise waits until a job changes state (or one of appId’s jobs, when given) or seconds pass (default and max 50). Call again while jobs run; a finished fetch can start brainstorming, then a check, so inspect all jobs for the app.
appIdstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
secondsinteger- 5–50.
Apps
store_searchReadTop 8 apps in one App Store (default us) for a name or niche, or the one app an App Store link names, from the store the link names: id, name, developer, ratings, whether it is tracked and whether the App Store Connect key sees it (mine).
Top 8 apps in one App Store (default us) for a name or niche, or the one app an App Store link names, from the store the link names: id, name, developer, ratings, whether it is tracked and whether the App Store Connect key sees it (mine). Track one with app_add.
termrequiredstring- Name, niche or App Store link.
storefrontstring- Storefront code, lowercase, e.g. "es". markets_list has them all.
asc_appsReadEvery app the connected App Store Connect accounts can see: id, name, bundle id, account (key id), whether it is on the App Store and already tracked.
Every app the connected App Store Connect accounts can see: id, name, bundle id, account (key id), whether it is on the App Store and already tracked. null = no key connected. Track one with app_add and its id.
No parameters.
app_addWriteBackgroundTrack an app from its App Store URL or numeric id; an unreleased app in the owner’s App Store Connect account is added by its id (asc_apps).
Track an app from its App Store URL or numeric id; an unreleased app in the owner’s App Store Connect account is added by its id (asc_apps). A URL naming a country (apps.apple.com/ru/…) makes that store the app’s main one: its name, first country, and the audit’s default main listing. Reads every locale’s listing next (App Store Connect when a key is connected). kind: mine (the owner’s app) or competitor; by default mine when the App Store Connect key sees the app, else competitor. store_search finds ids by name. Adding automatically reads listings, brainstorms and checks: wait for those jobs instead of starting a duplicate brainstorm. markets scopes this app’s initial work; brief gives the AI product direction before it starts. Returns as soon as the work starts. Call wait, then status, to follow it.
urlrequiredstring- App Store URL or id.
kindmine | competitor- Optional.
folderstring- Optional sidebar folder: "mine", "research" or a folder id (status settings.folders). Default: My apps when the key sees it, else Research.
marketsstring[]- Initial storefronts for this app only. Omit to use settings.defaultMarkets; choose a focused set before the first automatic check.
briefstring- Product facts, upcoming changes and preferred positioning, saved before the first brainstorm. Distinguish upcoming features from the current listing. Read back in status or board_get.app.brief.
app_contextWriteSave or replace the app’s product brief: product facts, upcoming changes and preferred positioning.
Save or replace the app’s product brief: product facts, upcoming changes and preferred positioning. All later brainstorms, researcher conversations and ASO audits use it. This does not start jobs or erase measurements. Empty brief clears it. For directions that apply to one audit only, use audit_english request. Read back in status or board_get.app.brief.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
briefrequiredstring- Product brief, up to 4000 characters; empty clears.
app_addAllWriteBackgroundTrack every on-store app the App Store Connect key sees that is not tracked yet, as the owner’s apps.
Track every on-store app the App Store Connect key sees that is not tracked yet, as the owner’s apps. Returns as soon as the work starts. Call wait, then status, to follow it.
No parameters.
app_kindWriteMove an app between My apps (mine) and Research (competitor).
Move an app between My apps (mine) and Research (competitor). Both kinds can be audited and exported; only connected owner apps can publish to App Store Connect.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
kindrequiredmine | competitor- Kind.
app_moveWriteMove an entry to a sidebar folder and place it in that folder’s order.
Move an entry to a sidebar folder and place it in that folder’s order. to: "mine" (My apps; makes it the owner’s), "research" (Research; competitors and apps being studied), "brainstorms" (brainstorms only) or an owner-made folder id, where it keeps its kind. before: the entry it lands above; omit for last.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
torequiredstring- Folder.
beforestring- Optional entry id it goes above.
folder_createWriteMake a sidebar folder.
Make a sidebar folder. Returns its id. Move entries in with app_move.
namerequiredstring- Folder name.
folder_renameWriteRename an owner-made sidebar folder.
Rename an owner-made sidebar folder.
folderIdrequiredstring- Folder id.
namerequiredstring- New name.
folder_removeWriteDestructiveDelete an owner-made sidebar folder.
Delete an owner-made sidebar folder. Its entries go back to My apps, Research or Brainstorms; nothing is deleted.
folderIdrequiredstring- Folder id.
import_astroWriteBackgroundImport Astro (the Mac ASO tracker) as evidence: per app, every phrase it tracked with Astro’s popularity, difficulty, rank and best rank (astro_get).
Import Astro (the Mac ASO tracker) as evidence: per app, every phrase it tracked with Astro’s popularity, difficulty, rank and best rank (astro_get). Nothing is added to the board; the researcher and brainstorms use it to suggest keywords. Apps not tracked here are added (with their Astro stores) and brainstormed with it. Reads Astro’s own database on this Mac, or the CSV from Astro’s Export all keywords (file). preview: counts only, nothing changes. Returns as soon as the work starts. Call wait, then status, to follow it.
filestring- Optional absolute path to an Astro keyword CSV export.
previewboolean- Only count what would come across.
folderstring- Optional folder for apps that are new here: "mine", "research" or a folder id.
astro_getReadWhat Astro (another ASO tracker) followed for this app, saved by import_astro: per store and phrase, Astro’s popularity (Apple search popularity 5–100; 5 = the floor), difficulty, current rank and best rank in the last 90 days (null = not ranked).
What Astro (another ASO tracker) followed for this app, saved by import_astro: per store and phrase, Astro’s popularity (Apple search popularity 5–100; 5 = the floor), difficulty, current rank and best rank in the last 90 days (null = not ranked). Evidence for which keywords to add (phrases the app already ranks for, with popularity above 5), not tracked keywords. The researcher and brainstorms read it too.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
app_marketsWriteSet the tracked countries, in display order; all show in the grid.
Set the tracked countries, in display order; all show in the grid. Newly added countries get every keyword translated (AI) and checked; dropped ones keep their phrases for later.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
marketsrequiredstring[]- Storefront codes.
app_autoCheckWriteSet how often this app is re-checked on its own.
Set how often this app is re-checked on its own. default = follow settings autoCheck (the default for every app).
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
autoCheckrequireddefault | off | daily | weekly | biweekly | monthly- Interval.
app_fetchWriteBackgroundRe-read the app’s name, subtitle and keyword field per locale.
Re-read the app’s name, subtitle and keyword field per locale. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
app_removeWriteDestructiveStop tracking an app and delete its keywords.
Stop tracking an app and delete its keywords.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
Brainstorms
session_createWriteBackgroundStart a keyword brainstorm: no app, just a topic ("a calorie tracker for keto dieters").
Start a keyword brainstorm: no app, just a topic ("a calorie tracker for keto dieters"). The AI proposes 15–25 keywords, checked for volume and difficulty in the US first, then in the Settings countries (settings.defaultMarkets), or only in the markets given. Change countries later with app_markets. Brainstorms have no rank, listing or audit. Returns its id (bs_…). Returns as soon as the work starts. Call wait, then status, to follow it.
briefrequiredstring- What to brainstorm.
marketsstring[]- Optional storefront codes; default: US, then the Settings countries.
session_updateWriteRename a brainstorm or change its topic.
Rename a brainstorm or change its topic.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
namestring- New name.
briefstring- New topic.
Keywords
keywords_brainstormWriteBackgroundAI rebuilds the app’s keywords: the phrases its listing targets (name, subtitle and keyword field combined) plus up to 10 ideas, each with one phrase in every market, then checks new phrases.
AI rebuilds the app’s keywords: the phrases its listing targets (name, subtitle and keyword field combined) plus up to 10 ideas, each with one phrase in every market, then checks new phrases. Keywords the user added or edited stay. On a brainstorm it adds up to 25 more keywords and keeps everything. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
keyword_addWriteBackgroundTrack a keyword (English phrase).
Track a keyword (English phrase). scope "all" (default): the AI fills in the phrase each tracked country types; "english": the label as is, in every tracked country (no translation). Pass terms (storefront → phrase) to set phrases yourself; missing countries are still translated with scope all. section "listing" files it under App Store Connect, else Ideas. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
labelrequiredstring- English phrase, e.g. "habit tracker".
scopeall | english- Which countries.
termsobject- Optional storefront → local phrase.
sectionidea | listing- Section.
keyword_localizeWriteBackgroundTranslate a keyword into every tracked country it has no phrase in yet, then check.
Translate a keyword into every tracked country it has no phrase in yet, then check. Returns as soon as the work starts. Call wait, then status, to follow it.
keywordIdrequiredstring- Keyword id from board_get.
keyword_updateWriteRename a keyword.
Rename a keyword.
keywordIdrequiredstring- Keyword id from board_get.
labelrequiredstring- New English phrase.
keyword_hideWriteHide a keyword from the board and from checks without deleting it, or show it again.
Hide a keyword from the board and from checks without deleting it, or show it again.
keywordIdrequiredstring- Keyword id from board_get.
hiddenrequiredboolean- true hides, false shows.
keyword_removeWriteDestructiveStop tracking a keyword in every market.
Stop tracking a keyword in every market.
keywordIdrequiredstring- Keyword id from board_get.
term_setWriteSet the phrase one market types for a keyword.
Set the phrase one market types for a keyword. Empty text removes the keyword from that market.
keywordIdrequiredstring- Keyword id from board_get.
storefrontrequiredstring- Storefront code, lowercase, e.g. "es". markets_list has them all.
textrequiredstring- Phrase as people type it in that market.
check_runWriteBackgroundSearch every term in each market: rank, volume and difficulty.
Search every term in each market: rank, volume and difficulty. Reuses today’s cached results unless force is true; pass force true when the owner asks to refresh ranks now. Apps are also re-checked on their own (settings autoCheck). Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
storefrontsstring[]- Only these markets.
forceboolean- Re-check ranks already checked today (default false).
ASO audit
audit_getReadThe app’s ASO audit: main-locale current fields, options, chosen fields, core keywords and research; per locale current vs proposed fields and the local phrases tested with their numbers.
The app’s ASO audit: main-locale current fields, options, chosen fields, core keywords and research; per locale current vs proposed fields and the local phrases tested with their numbers. export: true returns the export file format instead (per-locale fields, changes, tests).
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
exportboolean- Return the export format.
audit_englishWriteBackgroundASO audit step 1 (own apps and competitors; a competitor’s keyword field is not public, so it is inferred): optimizes the main listing (locale, default en-US or the last audit's): measures extra phrases in that locale's store when the AI needs more data, then proposes 3 name / subtitle / keyword field options in its language (one recommended), keeping the brand.
ASO audit step 1 (own apps and competitors; a competitor’s keyword field is not public, so it is inferred): optimizes the main listing (locale, default en-US or the last audit's): measures extra phrases in that locale's store when the AI needs more data, then proposes 3 name / subtitle / keyword field options in its language (one recommended), keeping the brand. Every other locale is localized from it in step 2. Result in audit_get english. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
localestring- Optional main listing: an App Store Connect locale, e.g. "es-ES". Default en-US.
requeststring- Optional note for the auditor, e.g. "keep the brand in the name".
aiobject- Optional AI for this run; omitted = Settings. ai_status lists the providers that can run and their models.
audit_moreWriteBackgroundWrite more main-listing options (default 3), different from the ones the audit has; existing options stay.
Write more main-listing options (default 3), different from the ones the audit has; existing options stay. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
countinteger- 1–5.
requeststring- Optional directions, e.g. "lead with the main feature".
aiobject- Optional AI for this run; omitted = Settings. ai_status lists the providers that can run and their models.
audit_measureWriteBackgroundMeasure phrases for the audit in the main listing's store: one App Store search each (cached per day); results join audit_get english.research.
Measure phrases for the audit in the main listing's store: one App Store search each (cached per day); results join audit_get english.research. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
phrasesrequiredstring[]- Phrases in the main listing's language, lowercase.
audit_option_addWriteAdd your own main-listing option to the audit (shown as a tab).
Add your own main-listing option to the audit (shown as a tab). Words already in name or subtitle are dropped from the keyword field; limits 30/30/100.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
titlerequiredstring- 2–3 words.
whystring- One line: what it wins.
explainstring- Optional: two short paragraphs on the idea.
fieldsrequiredobject- name, subtitle, keywords.
audit_option_updateWriteChange an existing main-listing option in place (it keeps its tab and number).
Change an existing main-listing option in place (it keeps its tab and number). Pass the full new fields; title/why/explain are optional.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
optionIdrequiredstring- The option id from audit_get.
titlestring- Optional new title.
whystring- Optional.
explainstring- Optional.
fieldsrequiredobject- name, subtitle, keywords.
audit_option_removeWriteDestructiveRemove one main-listing option from the audit.
Remove one main-listing option from the audit.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
optionIdrequiredstring- Option id from audit_get.
audit_chooseWriteSettle the main listing's fields: an option’s fields, the current ones, or your own.
Settle the main listing's fields: an option’s fields, the current ones, or your own. Limits: name 30, subtitle 30, keywords 100. core = the 2–4 main-language phrases every locale tests local words for.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
fieldsrequiredobject- name, subtitle, keywords.
corestring[]- Optional core phrases.
audit_localizeWriteBackgroundASO audit step 2: for every App Store locale (or the ones given) the AI lists local candidates for each core keyword, each is searched once in that locale’s store, and the locale is written from the winners.
ASO audit step 2: for every App Store locale (or the ones given) the AI lists local candidates for each core keyword, each is searched once in that locale’s store, and the locale is written from the winners. Result in audit_get locales. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
localesstring[]- App Store Connect locales, e.g. "de-DE". Default: all 49 besides the main listing.
requeststring- Optional directions; default = the main listing audit’s request.
aiobject- Optional AI for this run; omitted = Settings. ai_status lists the providers that can run and their models.
audit_locale_setWriteEdit one locale’s proposed fields by hand.
Edit one locale’s proposed fields by hand.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
localerequiredstring- App Store Connect locale.
fieldsrequiredobject- name, subtitle, keywords.
audit_locale_pickWriteBackgroundUse another tested phrase for a core keyword in one locale; the AI rewrites that locale.
Use another tested phrase for a core keyword in one locale; the AI rewrites that locale. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
localerequiredstring- App Store Connect locale.
keywordrequiredstring- Core keyword.
textrequiredstring- One of its tested candidates.
audit_clearWriteDestructiveDelete the app’s ASO audit.
Delete the app’s ASO audit.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
next_versionReadFor an own app: the editable iOS version in App Store Connect, if any, and the next version number to create.
For an own app: the editable iOS version in App Store Connect, if any, and the next version number to create. audit_publish writes into the editable one, or needs versionString = next. null = no key connected.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
audit_publishWriteBackgroundDestructiveWrite the audit into App Store Connect: the editable iOS version (created as versionString when there is none), every locale’s keyword field, name and subtitle; missing locales are added.
Write the audit into App Store Connect: the editable iOS version (created as versionString when there is none), every locale’s keyword field, name and subtitle; missing locales are added. Never submits for review. Only when the owner asked. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
versionStringstring- New version number when no editable version exists, e.g. "2.4".
Researcher chat
agent_askWriteBackgroundMessage the in-app keyword researcher for an app, as the owner would in the chat.
Message the in-app keyword researcher for an app, as the owner would in the chat. It reads the board and may add, hide, delete or edit keywords; with scope "audit" it also reads the ASO audit and may add or remove listing options and measure US phrases. Its answer lands in board_get chat. Returns as soon as the work starts. Call wait, then status, to follow it.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
textrequiredstring- The message.
scopekeywords | audit- The page the owner is on.
aiobject- Optional AI for this run; omitted = Settings. ai_status lists the providers that can run and their models.
agent_clearWriteDestructiveClear the researcher chat for an app.
Clear the researcher chat for an app.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
App Store Connect and settings
asc_connectWriteSave an App Store Connect API key (encrypted on this computer) as one more developer account (status settings.ascAccounts), then re-read every app’s listings.
Save an App Store Connect API key (encrypted on this computer) as one more developer account (status settings.ascAccounts), then re-read every app’s listings. The same key again updates it; replace = an account id this key takes the place of. Pass keyFile (path to the AuthKey_<id>.p8; keyId then comes from its name) or privateKey.
issuerIdrequiredstring- Issuer id (UUID).
keyIdstring- Key id; optional with an AuthKey_<id>.p8 keyFile.
keyFilestring- Absolute path to the .p8 file.
privateKeystring- .p8 file contents, when there is no file.
replacestring- Optional account id (key id) to replace.
asc_testWriteCheck the saved App Store Connect keys with Apple (one account with accountId, else all).
Check the saved App Store Connect keys with Apple (one account with accountId, else all). Returns how many apps they see, or the reason it fails (a revoked key or wrong Issuer ID → asc_connect with a new key; 403 → the key needs App Manager access).
accountIdstring- Optional account id (key id).
asc_disconnectWriteDestructiveForget one App Store Connect account (accountId = its key id), or every account without accountId.
Forget one App Store Connect account (accountId = its key id), or every account without accountId.
accountIdstring- Optional account id (key id).
settings_saveWritePick the AI CLI used for brainstorming, its model and reasoning level (null = the CLI default), how often every app is re-checked on its own (default daily), check speed, how many AI runs go at once, whether detail popups open on click or hover, and the countries new apps start with.
Pick the AI CLI used for brainstorming, its model and reasoning level (null = the CLI default), how often every app is re-checked on its own (default daily), check speed, how many AI runs go at once, whether detail popups open on click or hover, and the countries new apps start with.
aiProviderclaude | codex | opencode | ollama- Provider.
aiModelobject- Model and reasoning level for one provider. Models are listed by Settings → AI agent.
aiCliobject- Which installed copy of a CLI to run, when status lists more than one (ai_status copies). null = the newest (default).
autoCheckoff | daily | weekly | biweekly | monthly- Auto-check interval.
checkSpeednormal | fast- Check speed: normal (2 phrases at a time, default) or fast (3 at a time, closer together; Apple may pause it more often).
aiParallelinteger- AI runs at once across every app (brainstorms, translations, audits, chat), 1–4, default 3. App Store checks have their own queue and are not affected.
detailsclick | hover- Detail popups open on click (default) or on hover.
boardMetricsstring[]- Metrics shown on the board, at least one. Default: all three. Order is always rank, difficulty, volume.
defaultMarketsstring[]- Storefront codes for new apps.
job_stopWriteStop a running job for an app (status lists them).
Stop a running job for an app (status lists them). Stopping localize also drops the keywords still waiting to be translated; phrases already written stay.
appIdrequiredstring- App id from status: an App Store id, or "bs_…" for a brainstorm.
kindrequiredfetch | brainstorm | localize | check | agent | audit | auditLocalize | publish- Job kind.
Troubleshooting
Open Wow Keywords, then ask again.
Enter your license key in the app.
Start a new agent session. Check its list command (claude mcp list, codex mcp list, opencode mcp list).
Click MCP in the Wow Keywords sidebar and press Update next to the agent.
Ask the agent to call status. Jobs keep running in the app; wait returns within 50 seconds by design.
Still stuck? Chat with us.