2929
3030## Overview
3131
32- ** asc-mcp** is a Swift-based MCP server that bridges [ Claude] ( https://claude.ai ) (or any MCP-compatible host) with the [ App Store Connect API] ( https://developer.apple.com/documentation/appstoreconnectapi ) . It exposes ** 348 tools** across 36 worker domains, enabling you to automate your entire iOS/macOS release workflow through natural language.
32+ ** asc-mcp** is a Swift-based MCP server that bridges [ Claude] ( https://claude.ai ) (or any MCP-compatible host) with the [ App Store Connect API] ( https://developer.apple.com/documentation/appstoreconnectapi ) . It exposes ** 389 tools** across 32 worker domains, enabling you to automate your entire iOS/macOS release workflow through natural language.
3333
3434### Key capabilities
3535
3939- ** Build management** — track processing, encryption compliance, readiness checks
4040- ** Customer reviews** — list, respond, update, delete responses, aggregate statistics
4141- ** In-app purchases** — CRUD for IAPs, localizations, price points, review screenshots
42- - ** Subscriptions** — subscription CRUD, groups, localizations, prices, offer codes, win-back offers
42+ - ** Subscriptions** — subscription CRUD, groups, localizations, prices, availability, offer codes, win-back, intro, and promotional offers
4343- ** Provisioning** — bundle IDs, devices, certificates, profiles, capabilities
4444- ** Marketing** — screenshots, app previews, custom product pages, A/B testing (PPO), promoted purchases
4545- ** Accessibility declarations** — manage App Store accessibility support declarations by device family
@@ -363,7 +363,7 @@ Add to `~/.codeium/windsurf/mcp_config.json`:
363363}
364364` ` `
365365
366- > ** Note:** Windsurf has a 100-tool limit. The server exposes 348 tools by default, so you must use ` --workers` to select a subset. See [Worker Filtering](# worker-filtering) below.
366+ > ** Note:** Windsurf has a 100-tool limit. The server exposes 389 tools by default, so you must use ` --workers` to select a subset. See [Worker Filtering](# worker-filtering) below.
367367
368368< /details>
369369
@@ -372,7 +372,7 @@ Add to `~/.codeium/windsurf/mcp_config.json`:
372372
373373### Worker Filtering
374374
375- The server exposes **348 tools** across 36 worker domains. Some MCP clients impose a tool limit (e.g., Windsurf caps at 100). Use `--workers` to enable only the workers you need:
375+ The server exposes **389 tools** across 32 worker domains. Some MCP clients impose a tool limit (e.g., Windsurf caps at 100). Use `--workers` to enable only the workers you need:
376376
377377```bash
378378# Only load apps, builds, and version lifecycle tools
@@ -382,7 +382,7 @@ asc-mcp --workers apps,builds,versions
382382asc-mcp --workers apps,accessibility,builds,versions,reviews,beta_groups,iap
383383
384384# Monetization focus
385- asc-mcp --workers apps,iap,subscriptions,offer_codes,winback, pricing,promoted
385+ asc-mcp --workers apps,iap,subscriptions,pricing,promoted
386386```
387387
388388`company` and `auth` workers are **always enabled** regardless of the filter (they provide core multi-account and authentication functionality).
@@ -436,12 +436,8 @@ The generated report records Apple spec metadata, path and operation counts, dom
436436| ` beta_groups` | ` beta_groups_` | 9 | TestFlight groups |
437437| ` beta_feedback` | ` beta_feedback_` | 8 | TestFlight feedback screenshots, crash submissions, crash logs |
438438| ` beta_testers` | ` beta_testers_` | 12 | Tester management |
439- | ` iap` | ` iap_` | 24 | In-app purchases, prices, review screenshots |
440- | ` subscriptions` | ` subscriptions_` | 29 | Subscription CRUD, groups, localizations, prices |
441- | ` offer_codes` | ` offer_codes_` | 10 | Subscription offer codes, one-time codes |
442- | ` winback` | ` winback_` | 5 | Win-back offers for subscriptions |
443- | ` intro_offers` | ` intro_offers_` | 4 | Subscription introductory offers |
444- | ` promo_offers` | ` promo_offers_` | 6 | Subscription promotional offers |
439+ | ` iap` | ` iap_` | 46 | In-app purchases, pricing, availability, offer codes, review assets |
440+ | ` subscriptions` | ` subscriptions_` | 73 | Subscription lifecycle, pricing, availability, offers, assets |
445441| ` sandbox` | ` sandbox_` | 3 | Sandbox testers |
446442| ` beta_app` | ` beta_app_` | 10 | Beta app localizations and review |
447443| ` pre_release` | ` pre_release_` | 3 | Pre-release versions |
@@ -465,20 +461,20 @@ When connected to an LLM client, tool definitions consume context tokens. Here's
465461
466462| Configuration | Tools | ~Tokens |
467463|---|---:|---:|
468- | All workers (default) | 348 | **~39,400 ** |
464+ | All workers (default) | 389 | **~44,000 ** |
469465| Release workflow: `apps,builds,versions,reviews` | ~57 | ~7,000 |
470- | Monetization: `apps,iap,subscriptions,pricing` | ~78 | ~9,000 |
466+ | Monetization: `apps,iap,subscriptions,pricing` | ~137 | ~15,500 |
471467| TestFlight: `apps,builds,beta_groups,beta_testers` | ~56 | ~6,000 |
472468| Marketing: `apps,screenshots,custom_pages,ppo,promoted` | ~60 | ~6,800 |
473469| `--workers apps` | 16 | ~2,000 |
474470
475- **Heaviest workers:** Xcode Cloud (30 tools), Subscriptions (29 tools), InAppPurchases (24 tools), Provisioning (17 tools), Screenshots (16 tools).
471+ **Heaviest workers:** Subscriptions (73 tools), InAppPurchases (46 tools), Xcode Cloud (30 tools), Provisioning (17 tools), Screenshots (16 tools).
476472
477- For Claude (200K context) ~39.4K tokens is about 20 % of the window. For clients with smaller context windows, use `--workers` to reduce the footprint.
473+ For Claude (200K context) ~44K tokens is about 22 % of the window. For clients with smaller context windows, use `--workers` to reduce the footprint.
478474
479475## Available Tools
480476
481- **348 tools** organized across 36 worker domains (use `--workers` to filter — see [Worker Filtering](#worker-filtering)):
477+ **389 tools** organized across 32 worker domains (use `--workers` to filter — see [Worker Filtering](#worker-filtering)):
482478
483479<details>
484480<summary><strong>Company Management</strong> — 3 tools</summary>
@@ -713,128 +709,63 @@ Includes tester list/search/get/create/delete, app relationships, invitations, b
713709</details>
714710
715711<details>
716- <summary><strong>In-App Purchases</strong> — 24 tools</summary>
712+ <summary><strong>In-App Purchases</strong> — 46 tools</summary>
717713
718714| Tool | Description |
719715|------|-------------|
720716| `iap_list` | List in-app purchases for an app |
721717| `iap_get` | Get IAP details |
722- | `iap_create` | Create a new IAP (consumable, non-consumable, subscription) |
718+ | `iap_create` | Create a new IAP |
723719| `iap_update` | Update IAP attributes |
724- | `iap_delete` | Delete an in-app purchase |
720+ | `iap_delete` | Delete an IAP |
725721| `iap_list_localizations` | List IAP localizations |
726722| `iap_create_localization` | Create IAP localization |
727723| `iap_update_localization` | Update IAP localization |
728724| `iap_delete_localization` | Delete IAP localization |
729725| `iap_submit_for_review` | Submit IAP for review |
730726| `iap_list_subscriptions` | List subscription groups |
731727| `iap_get_subscription_group` | Get subscription group details |
732- | `iap_list_price_points` | List available price points |
728+ | `iap_inventory` | AI-friendly IAP inventory for an app |
729+ | `iap_list_price_points` | List territory-aware price points |
730+ | `iap_list_price_point_equalizations` | List price point equalizations |
733731| `iap_get_price_schedule` | Get price schedule |
734732| `iap_set_price_schedule` | Set price schedule |
735- | `iap_get_review_screenshot` | Get review screenshot |
733+ | `iap_pricing_summary` | Summarize current and scheduled prices |
734+ | `iap_prepare_offer_prices` | Find price point candidates for offers |
736735| `iap_set_availability` | Set territory availability |
737- | `iap_get_availability` | Get territory availability |
736+ | `iap_get_availability` | Get availability by IAP or availability ID |
737+ | `iap_list_available_territories` | List available territories |
738+ | `iap_get_promoted_purchase` | Get promoted purchase state |
739+ | `iap_list_offer_codes` | List IAP offer codes |
740+ | `iap_get_offer_code` | Get an IAP offer code |
741+ | `iap_create_offer_code` | Create an IAP offer code |
742+ | `iap_update_offer_code` | Update an IAP offer code |
743+ | `iap_deactivate_offer_code` | Deactivate an IAP offer code |
744+ | `iap_list_offer_code_prices` | List territory-aware offer prices |
745+ | `iap_generate_one_time_codes` | Generate one-time offer codes |
746+ | `iap_list_one_time_codes` | List one-time code batches |
747+ | `iap_get_one_time_code` | Get a one-time code batch |
748+ | `iap_update_one_time_code` | Update a one-time code batch |
749+ | `iap_deactivate_one_time_code` | Deactivate a one-time code batch |
750+ | `iap_get_one_time_code_values` | Get generated one-time code values |
751+ | `iap_create_custom_code` | Create a custom offer code |
752+ | `iap_get_custom_code` | Get custom code details |
753+ | `iap_update_custom_code` | Update a custom code |
754+ | `iap_deactivate_custom_code` | Deactivate a custom code |
755+ | `iap_get_review_screenshot` | Get review screenshot |
756+ | `iap_upload_review_screenshot` | Upload review screenshot |
757+ | `iap_delete_review_screenshot` | Delete review screenshot |
738758| `iap_upload_image` | Upload promotional image |
739759| `iap_get_image` | Get promotional image |
740760| `iap_delete_image` | Delete promotional image |
741- | `iap_upload_review_screenshot` | Upload review screenshot |
742- | `iap_delete_review_screenshot` | Delete review screenshot |
743761| `iap_list_images` | List promotional images |
744762
745763</details>
746764
747765<details>
748- <summary><strong>Subscriptions</strong> — 29 tools</summary>
749-
750- | Tool | Description |
751- |------|-------------|
752- | `subscriptions_list` | List subscriptions in a group |
753- | `subscriptions_get` | Get subscription details |
754- | `subscriptions_create` | Create a new subscription |
755- | `subscriptions_update` | Update subscription |
756- | `subscriptions_delete` | Delete subscription |
757- | `subscriptions_list_localizations` | List subscription localizations |
758- | `subscriptions_create_localization` | Create localization |
759- | `subscriptions_update_localization` | Update localization |
760- | `subscriptions_delete_localization` | Delete localization |
761- | `subscriptions_list_prices` | List subscription prices |
762- | `subscriptions_list_price_points` | List available price points |
763- | `subscriptions_create_group` | Create subscription group |
764- | `subscriptions_update_group` | Update subscription group |
765- | `subscriptions_delete_group` | Delete subscription group |
766- | `subscriptions_list_group_localizations` | List subscription group localizations |
767- | `subscriptions_create_group_localization` | Create subscription group localization |
768- | `subscriptions_get_group_localization` | Get subscription group localization |
769- | `subscriptions_update_group_localization` | Update subscription group localization |
770- | `subscriptions_delete_group_localization` | Delete subscription group localization |
771- | `subscriptions_delete_price` | Delete subscription price |
772- | `subscriptions_submit` | Submit subscription for review |
773- | `subscriptions_upload_image` | Upload subscription image |
774- | `subscriptions_get_image` | Get subscription image |
775- | `subscriptions_delete_image` | Delete subscription image |
776- | `subscriptions_upload_review_screenshot` | Upload review screenshot |
777- | `subscriptions_get_review_screenshot` | Get review screenshot |
778- | `subscriptions_delete_review_screenshot` | Delete review screenshot |
779- | `subscriptions_list_images` | List subscription images |
780- | `subscriptions_get_review_screenshot_for_subscription` | Get review screenshot for a subscription |
781-
782- </details>
783-
784- <details>
785- <summary><strong>Offer Codes</strong> — 10 tools</summary>
786-
787- | Tool | Description |
788- |------|-------------|
789- | `offer_codes_list` | List offer code configurations |
790- | `offer_codes_create` | Create offer code configuration |
791- | `offer_codes_update` | Update offer code (enable/disable) |
792- | `offer_codes_deactivate` | Deactivate all codes |
793- | `offer_codes_list_prices` | List prices for an offer code |
794- | `offer_codes_generate_one_time` | Generate one-time use codes (up to 10K) |
795- | `offer_codes_list_one_time` | List generated one-time codes |
796- | `offer_codes_create_custom_code` | Create a custom offer code |
797- | `offer_codes_get_custom_code` | Get custom offer code details |
798- | `offer_codes_deactivate_custom_code` | Deactivate a custom offer code |
799-
800- </details>
801-
802- <details>
803- <summary><strong>Win-Back Offers</strong> — 5 tools</summary>
804-
805- | Tool | Description |
806- |------|-------------|
807- | `winback_list` | List win-back offers |
808- | `winback_create` | Create a win-back offer |
809- | `winback_update` | Update a win-back offer |
810- | `winback_delete` | Delete a win-back offer |
811- | `winback_list_prices` | List win-back offer prices |
812-
813- </details>
814-
815- <details>
816- <summary><strong>Introductory Offers</strong> — 4 tools</summary>
766+ <summary><strong>Subscriptions</strong> — 73 tools</summary>
817767
818- | Tool | Description |
819- |------|-------------|
820- | `intro_offers_list` | List introductory offers for a subscription |
821- | `intro_offers_create` | Create an introductory offer |
822- | `intro_offers_update` | Update an introductory offer (end date only) |
823- | `intro_offers_delete` | Delete an introductory offer |
824-
825- </details>
826-
827- <details>
828- <summary><strong>Promotional Offers</strong> — 6 tools</summary>
829-
830- | Tool | Description |
831- |------|-------------|
832- | `promo_offers_list` | List promotional offers for a subscription |
833- | `promo_offers_get` | Get a promotional offer |
834- | `promo_offers_create` | Create a promotional offer |
835- | `promo_offers_update` | Update promotional offer prices |
836- | `promo_offers_delete` | Delete a promotional offer |
837- | `promo_offers_list_prices` | List prices for a promotional offer |
768+ Includes subscription groups, group localizations, subscriptions, subscription localizations, territory-aware prices, price points, price point equalizations, availability, promoted purchase reads, inventory/pricing helpers, intro offers, promotional offers, offer codes, one-time/custom codes, win-back offers, images, and review screenshots. All former public `offer_codes_*`, `intro_offers_*`, `promo_offers_*`, and `winback_*` functionality is exposed through `subscriptions_*`.
838769
839770</details>
840771
@@ -1120,7 +1051,7 @@ Sources/asc-mcp/
11201051│ ├── HTTPClient.swift # Actor-based HTTP with retry logic
11211052│ ├── JWTService.swift # ES256 JWT token generation
11221053│ └── CompaniesManager.swift # Multi-account management
1123- └── Workers/ # MCP tool implementations (36 worker domains + MainWorker router)
1054+ └── Workers/ # MCP tool implementations (32 public worker domains + MainWorker router)
11241055 ├── MainWorker/WorkerManager # Central tool registry & routing
11251056 ├── CompaniesWorker/ # company_* tools
11261057 ├── AuthWorker/ # auth_* tools
@@ -1135,10 +1066,6 @@ Sources/asc-mcp/
11351066 ├── BetaTestersWorker/ # beta_testers_* tools
11361067 ├── InAppPurchasesWorker/ # iap_* tools
11371068 ├── SubscriptionsWorker/ # subscriptions_* tools
1138- ├── OfferCodesWorker/ # offer_codes_* tools
1139- ├── WinBackOffersWorker/ # winback_* tools
1140- ├── IntroductoryOffersWorker/ # intro_offers_* tools
1141- ├── PromotionalOffersWorker/ # promo_offers_* tools
11421069 ├── SandboxTestersWorker/ # sandbox_* tools
11431070 ├── BetaAppWorker/ # beta_app_* tools
11441071 ├── ProvisioningWorker/ # provisioning_* tools
0 commit comments