Connect ASOgenic and run an ASO pass
ASOgenic is a Model Context Protocol server. Connect your MCP client with OAuth, then provide App Store Connect credentials separately through the signed-in dashboard. ASOgenic can research keywords, validate metadata, manage screenshots, and prepare a reviewed release for submission.
In a hurry? Paste https://asogenic.com/setup to
your MCP client. It's a plain-text runbook any compatible client or automation can follow.
A Markdown-labelled copy is also available at https://asogenic.com/setup.md.
How it works
Three services, kept deliberately separate:
- Your MCP client (any MCP-compatible assistant, coding tool, or automation) connects to the ASOgenic MCP endpoint. Interactive desktop and CLI clients use MCP OAuth. Unattended clients may use a platform API key.
- The ASOgenic MCP server exposes the tools. Hosted clients use the encrypted App Store Connect credential enrolled through the signed-in dashboard.
- This dashboard manages platform access. It is separate from MCP OAuth and from the App Store Connect credential step.
Authentication
Interactive clients use standard MCP OAuth, but their setup surfaces are not interchangeable. Codex CLI and the Codex IDE extension share MCP configuration. ChatGPT Work plugins, Claude account connectors, Cursor, and VS Code each have their own registration and session state. Platform API keys remain available only for CI and unattended automation.
Choose your client
Use exactly one setup below. Choose the one for the product that will call ASOgenic. Every
interactive setup uses the same Streamable HTTP endpoint,
https://mcp.asogenic.com/mcp, with OAuth and no custom headers.
Codex CLI and Codex IDE extension
These two share MCP configuration. Run:
codex mcp list
codex mcp login asogenic
Complete browser OAuth, then start a new Codex CLI session or IDE chat and call
asogenic_auth_status. A
http://127.0.0.1:<port>/callback destination is Codex's temporary OAuth
listener. It is expected and is not the MCP URL.
ChatGPT Work developer-mode plugin
This creates a personal plugin in ChatGPT Work. It does not authenticate Codex CLI, the Codex IDE extension, or another Codex surface.
- In ChatGPT, open Settings → Security and login and enable Developer mode.
- Open ChatGPT Plugins, select +, and create a plugin named
ASOgenicwith URLhttps://mcp.asogenic.com/mcpand OAuth authentication. - Review the discovered tools, create the plugin, open it, and select + to install it.
- Start a new Work chat, enable/select ASOgenic, complete OAuth, and call
asogenic_auth_status.
Separate connection: a successful
codex mcp login does not authenticate the ChatGPT plugin. Refresh or reconnect the
plugin in ChatGPT Plugins and start a new Work chat. Codex CLI/IDE users follow the Codex
section above.
Claude Code
claude mcp list
claude mcp get asogenic
Start claude, run /mcp, choose ASOgenic, and complete browser OAuth.
Run /mcp again to confirm it is connected, then call
asogenic_auth_status. These commands are for Claude Code only.
Claude, Cowork, and Claude Desktop
For an individual account, open Customize → Connectors → + Add → Add custom
connector. Enter the name ASOgenic and URL
https://mcp.asogenic.com/mcp, keep the OAuth method Claude discovers, and complete sign-in.
In a new conversation, enable ASOgenic from + → Connectors and call
asogenic_auth_status.
On Team or Enterprise, an authorized owner first adds it under Organization settings → Connectors → Add → Custom → Web. Each member then selects Connect under Customize → Connectors. Remote connectors use this account UI even on Claude Desktop. Do not use Claude Code commands or desktop JSON configuration.
Cursor IDE and Cursor Agent CLI
Add this URL-only entry to global ~/.cursor/mcp.json, or to
.cursor/mcp.json only when project scope is intentional:
Enable ASOgenic in Cursor MCP settings, select Needs login, complete OAuth,
and start a new Agent chat. Confirm it appears under Available Tools and call
asogenic_auth_status. CLI diagnostics:
cursor-agent mcp list, cursor-agent mcp login asogenic, and
cursor-agent mcp list-tools asogenic.
VS Code with GitHub Copilot
- Run MCP: Add Server from the Command Palette.
- Choose HTTP, enter
https://mcp.asogenic.com/mcp, and name itasogenic. - Run MCP: List Servers, start ASOgenic, and approve browser OAuth.
- In Copilot Chat Agent mode, enable ASOgenic through Configure Tools, open a
new chat, and call
asogenic_auth_status.
Other OAuth-capable MCP clients
Add a Streamable HTTP server named asogenic with URL
https://mcp.asogenic.com/mcp, leave custom headers empty, and use that client's Connect,
Sign in, or Authorize action. Complete OAuth in that same product, open a new session, and call
asogenic_auth_status. If an interactive client does not support MCP OAuth, choose
a supported OAuth-capable client. Platform API keys are reserved for unattended automation.
Do not copy commands or tokens from another product.
CI and unattended automation
Do not attempt interactive OAuth. Create an ASOgenic platform API key, keep it in the job's secret manager, and use this fixed-header configuration:
This is the only public setup where a fixed bearer header is expected. Never put Apple values in this connection config.
Connect App Store Connect
After the MCP connection is authenticated, call asogenic_auth_status. If it reports
asc_configured: false, the ASOgenic connection works but Apple access has not been
configured.
- Get the three Apple values.
In App Store Connect, open Users and Access → Integrations → App Store Connect API. Use the team's Issuer ID, the API key's Key ID, and its downloaded
.p8private key. Apple allows that file to be downloaded only when the key is created. A lost file requires a replacement key. - Open the dashboard connection page.
When
asogenic_auth_statusreports missing or invalid hosted credentials, the assistant should open the exactnext_action.url. Upload the.p8file and enter the IDs on your signed-in ASOgenic account dashboard. Never send the.p8through chat or an MCP tool. - Save and return to your agent.
The dashboard stores the credential encrypted. Return to the agent and retry
asogenic_auth_status. A stored credential can still be revoked later, so ASOgenic checks Apple access when an Apple action is attempted. Once connected, the upload form stays hidden until you choose Replace credential. Disconnect removes the stored credential without revealing the private key. The complete release workflow requires App Manager or a higher Apple role. - Verify Apple access.
Call
asogenic_auth_statusagain. Continue only whenasc_configured: trueandasc_valid: true, then callasogenic_list_apps. Service readiness does not prove account access.
The release workflow
The order that actually gets a never-launched app through Apple review:
asogenic_auth_status: credentials work.asogenic_list_apps/asogenic_resolve_app: find the app. Keep thesession_key.asogenic_intake_product_context: record what the app is. Everything downstream depends on this.- Per locale:
asogenic_fetch_source→ generate the fields yourself (asogenic_research_keywords,asogenic_assemble_locale,asogenic_get_field_specare aids) →asogenic_validate_record→asogenic_approve_locale→asogenic_publish. - Store setup, each required before submission: category, age rating, version copyright, content-rights declaration, review info (+ demo account if the app needs login), base price, screenshots for every device family the app supports.
asogenic_get_release_readiness:blockersmust be empty. Read thewarningstoo (some name gaps the server can't verify).asogenic_submit_for_review.
App Privacy is not in this list on purpose. ASOgenic cannot complete the App Privacy questionnaire through this credential flow. Set and verify it in the App Store Connect web UI before submission.
Product pages, Asset Library, and Product Page Optimization
ASOgenic exposes the newer App Store Connect product-page surfaces as reviewable MCP tools. Use the reference-data tool before preparing media, keep campaign intent attached to each custom page, and record the scope of every experiment.
Custom Product Pages
asogenic_list_custom_product_pages, asogenic_create_custom_product_page, asogenic_update_custom_product_page, asogenic_delete_custom_product_page, asogenic_create_custom_product_page_version, asogenic_list_custom_product_page_localizations, asogenic_create_custom_product_page_localization, asogenic_update_custom_product_page_localization, asogenic_delete_custom_product_page_localization, asogenic_set_custom_product_page_keywords, asogenic_list_custom_product_page_keywords, and asogenic_remove_custom_product_page_keywords.
Asset Library and placements
asogenic_get_asset_library, asogenic_list_asset_library_assets, asogenic_get_asset_library_reference_data, asogenic_upload_asset_library_asset, asogenic_update_asset_library_asset, asogenic_delete_asset_library_asset, asogenic_list_asset_library_placements, asogenic_create_asset_library_placement, and asogenic_delete_asset_library_placement. Uploads use Apple’s reservation, signed-upload, commit, and processing flow.
Product Page Optimization
asogenic_list_product_page_optimization_tests, asogenic_create_product_page_optimization_test, and asogenic_update_product_page_optimization_test cover the v2 experiment surface for the default App Store product page. PPO is not a Custom Product Page editor. Keep the control, treatment, storefront, audience, dates, and primary metric in the review record.
See the Asset Library guide, Custom Product Pages guide, and PPO guide. Apple’s references: Custom Product Pages, Manage your App Store assets, and Product Page Optimization.
Quotas & rate limits
Each account gets 500 tool calls per month. The allowance is account-wide across OAuth connections and platform API keys. The window rolls continuously: old calls age out. They do not reset on a fixed date. Short-window burst caps also apply, currently about 120 calls per minute.
RATE_LIMITED: a burst cap. Wait theretry_after_sseconds and continue.QUOTA_EXCEEDED: the monthly allowance is spent. It recovers as the oldest calls age out.
A full optimization pass (keyword research, metadata, and publishing across a few locales) is roughly 50 to 100 calls, so a free key covers real, repeated use.
Troubleshooting
- Codex CLI or IDE is configured, but the chat has no ASOgenic tools
- Run
codex mcp list, confirm the exact URL, and runcodex mcp login asogenicif needed. Then start a new CLI session or IDE chat. Do not add a duplicate server. - ChatGPT Work plugin says authentication succeeded, but action discovery failed
- Open ChatGPT Plugins, open ASOgenic, select Refresh, and confirm the URL
ends in
/mcp. Review the discovered tools, install and enable the plugin in ChatGPT Work, and start a new Work chat. The Codex CLI login does not repair this connection. - Claude Code says
Needs authentication - Run
claude mcp get asogenic, then authenticate from/mcpin an interactive Claude Code session. If the credential is stale, use Clear authentication there orclaude mcp logout asogenicbefore logging in again. - Claude or Claude Desktop does not show the connector
- Confirm it exists under Customize → Connectors and is enabled from the conversation's + → Connectors menu. Team/Enterprise users may need an authorized owner to add the organization connector first. Do not use desktop JSON for this hosted connector.
- Cursor shows
Needs loginor no ASOgenic tools - Keep the
mcp.jsonentry URL-only, enable it in MCP settings, select Needs login, and open a new Agent chat. Usecursor-agent mcp list-tools asogenicto check discovery from Cursor Agent CLI. - VS Code lists the server but Copilot Agent cannot use it
- Run MCP: List Servers and start/enable ASOgenic, approve OAuth, then enable its tools under Configure Tools. Run MCP: Reset Cached Tools after a metadata change.
Auth requiredorno verified tenant for this request- Reconnect the exact product and surface making the tool call, then retry
asogenic_auth_statusin a new session. Do not copy OAuth tokens between clients or paste them into chat. - Tools are visible but action discovery fails
- Use the client-specific recovery above, then test
asogenic_list_capabilities,asogenic_get_server_info, and finallyasogenic_auth_statusbefore attempting a write. A build label is not an authentication status. - A consent URL returns 404
- Start a fresh OAuth action in the current client. Old, expired, or replayed consent URLs should not be reused.
asc_configured: falsefromasogenic_auth_status- The MCP connection is authenticated, but Apple access is not configured. Open the dashboard
URL returned by
asogenic_auth_status, connect there, then retry the check. asc_valid: false- The credentials are present but Apple rejected them: wrong key ID/issuer ID pairing, a
revoked key, or a malformed
.p8. - Tools return 401 or “invalid token”
- For an interactive client, reconnect OAuth in that product and retry from a new session. For an unattended job, verify or rotate its platform key on the dashboard. Do not move tokens between clients.
- HTTP 502 appears briefly
- Retry after the service recovers. A transient 502 is not evidence that an Apple key or OAuth account should be rotated.
APP_PRIVACY_NO_API- Expected. See the App Privacy note above. Set it in the web UI.
Still stuck? See the FAQ or contact us.