Skip to main content

Examples

A sample session — what a first run feels like​

Asking an agent what a subscription costs worldwide; Heimdall answers in one tool call

You: Check the App Store Connect connection, then list my apps.

Agent: (calls asc__status, then apps__list) Connected. You have 3 apps: Acme (1234567890), Beta, Gamma.

You: For Acme, is the current version ready to submit?

Agent: (calls apps__app_store_versions__list, app_store_versions__get) Version 3.2 is in PREPARE_FOR_SUBMISSION. Screenshots and description are set; the build is attached. Nothing is blocking submission.

You: Is there a tool to manage in-app events? (you didn't load marketing)

Agent: (calls asc__search_tools) Yes — app_events__* live on asc-marketing, which isn't loaded. Add it with: claude mcp add -s user asc-marketing -- npx -y @erayendes/asc-mcp marketing (on other clients, re-run setup)

In plain language​

Talk to your client plainly:

  • Submit version 3.2 for review, and start a phased release once it's approved.
  • Show last week's TestFlight crash submissions grouped by device model.
  • Show my subscription groups and each tier's price in Turkey, Germany and the US.
  • This customer says they were charged twice — transaction ID 2000000891234567. What does their history show, and are they currently entitled?

Scenarios​

Invite a TestFlight tester​

Add sara@example.com to the Insiders group and give her the latest build.

Needs access (groups, testers) and testflight (build localizations, review details). Order matters and the API doesn't say so: a tester belongs to the account first, then to a group, and a build is offered to a group. Adding an email to a group creates the tester if they don't exist.

An external group needs Apple to review the build; an internal one doesn't. When testers say "nothing shows up", that is usually why.

Create a version and attach a build​

Start version 3.2, attach build 412, and tell me what's missing before I submit.

Needs distribution. The last clause is one call: preflight__check_version reads the version, its build, the review contact, every localization and the screenshots, and says what is missing and which tool fixes each gap.

Two failures worth knowing, neither of which announces itself:

  • A build still PROCESSING cannot be attached, and Apple doesn't say when it will finish.
  • If usesNonExemptEncryption is unanswered, the version waits in WAITING_FOR_EXPORT_COMPLIANCE after submission with no explanation attached.

Update keywords for one language​

Replace the Turkish keywords with these, leave the other languages alone.

Needs distribution. Keywords live on the version localization, one row per language, 100 characters — and the limit counts the commas. Name and subtitle live somewhere else entirely (app_info_localizations), because they belong to the app, not the version.

Ask for one language by name. A fifty-language listing is 264 KB in one piece, and the useful answer is one row of it.

Triage reviews and draft replies​

Show me this week's unanswered 1-star reviews and draft a reply in each review's language.

Needs marketing. reviews_ai__triage groups them, reviews_ai__draft_response writes the reply — your model writes it, through your client's sampling. There is no second API key, and no text goes to anyone else's model.

If you want replies that sound like your team rather than a language model, set ASC_REVIEWS_BRAND_VOICE, ASC_REVIEWS_BANNED_PHRASES and ASC_REVIEWS_SUPPORT_URL.

Manage sandbox testers​

Clear our sandbox account's purchase history and set its territory to Turkey.

Needs monetization. Sandbox testers are accounts you create in App Store Connect, not real Apple IDs; clearing purchase history is what makes a subscription purchasable again in testing, and it is a separate call from editing the tester.

Pull a sales or finance report​

Download last month's sales report and tell me the top five countries by units.

Needs analytics, and ASC_VENDOR_NUMBER set (setup asks for it). Two things trip this up:

  • Finance and sales are different reports. finance_reports__list is what Apple paid you, by region and currency. sales_reports__list is units and proceeds, by day or week. "Revenue" usually means the first one.
  • They arrive as gzipped TSV, not JSON. Ask for parse=true and you get rows back; without it you get a base64 blob nobody can read. If the report is large the full copy is kept as an MCP resource and the reply links to it.