mcpField
A
asc-availability

asc-availability

github.com/tddworksDevelopment585 installsUpdated 6w ago
Repository

About asc-availability

A skill for using the `asc` CLI to inspect and manage App Store app, in-app purchase, and subscription availability by territory. It helps developers diagnose regional restrictions and configure market coverage.

Key features

  1. 01Inspect app availability and blocking reasons
  2. 02Set app availability by territory
  3. 03Manage IAP and subscription territories
  4. 04List territory IDs and currencies
  5. 05Include newly added territories automatically

Use cases

  1. 01Find why an app cannot be sold in a region
  2. 02Restrict IAPs or subscriptions to selected markets
  3. 03Make products available in new territories

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/tddworks/asc-cli-skills --skill asc-availability

After installing, type/asc-availabilityin Claude Code to confirm it loaded.

Details

From the project README

App, IAP & Subscription Territory Availability

Manage which App Store territories (countries/regions) an app, in-app purchase, or subscription is available in. This is essential for controlling regional distribution — for example, understanding why your app is blocked in certain countries, restricting a subscription to specific markets, or making an IAP available worldwide.

App Availability (Per-Territory Status)

The richest availability view — shows every territory with isAvailable (true/false), blocking reasons via contentStatuses, releaseDate, and isPreOrderEnabled.

asc app-availability get --app-id <APP_ID> [--pretty]

If the app's availability was never set up (App Store Connect shows Set Up Availability), this returns {"data":[]} and prints a hint. Set it up:

asc app-availability create --app-id <APP_ID> --all-territories --available-in-new-territories
asc app-availability create --app-id <APP_ID> --territory USA --territory JPN [--available-in-new-territories]

Pass either --territory (repeatable) or --all-territories (every territory from asc territories list). REST: POST /api/v1/apps/:appId/availability with {"territory": [...]} or {"all-territories": true}. An unreleased app shows CANNOT_SELL + AVAILABLE_FOR_SALE_UNRELEASED_APP in every territory — expected until release.

This returns all ~175 territories with their status. Key contentStatuses values:

  • AVAILABLE — selling normally
  • CANNOT_SELL_RESTRICTED_RATING — age rating blocks sale in this territory
  • MISSING_RATING — no age rating configured
  • ICP_NUMBER_MISSING — China requires ICP number
  • BRAZIL_REQUIRED_TAX_ID — Brazil requires tax ID
  • CANNOT_SELL_GAMBLING / CANNOT_SELL_CASINO — gambling restrictions
  • 30+ more specific blocking reasons

List All Territories

Before setting availability, discover valid territory IDs. Apple has ~175 territories, each with an ISO-style ID (e.g. USA, CHN, JPN) and a currency code.

asc territories list [--output table] [--pretty]

Example output:

ID    Currency
USA   USD
CHN   CNY
JPN   JPY
GBR   GBP
DEU   EUR
...

IAP Availability

Get Current IAP Availability

Check which territories an IAP is currently available in. The response includes each territory's currency code.

asc iap-availability get --iap-id <IAP_ID> [--pretty]

Example JSON response:

{
  "data": [
    {
      "id": "avail-1",
      "iapId": "iap-42",
      "isAvailableInNewTerritories": true,
      "territories": [
        { "id": "USA", "currency": "USD" },
        { "id": "CHN", "currency": "CNY" }
      ],
      "affordances": {
        "getAvailability": "asc iap-availability get --iap-id iap-42",
        "createAvailability": "asc iap-availability create --iap-id iap-42 ...",
        "listTerritories": "asc territories list"
      }
    }
  ]
}
Create IAP Availability

Set which territories an IAP should be available in. Use --territory (repeatable) to specify each territory ID, and --available-in-new-territories to automatically include any new territories Apple adds in the future.

asc iap-availability create \
  --iap-id <IAP_ID> \
  --available-in-new-territories \
  --territory USA \
  --territory CHN \
  --territory JPN
FlagRequiredDescription
--iap-idYesIAP ID to set availability for
--available-in-new-territoriesNoAuto-include new territories Apple adds
--territoryNoTerritory ID (repeatable). Use asc territories list to find valid IDs

Subscription Availability

Get Current Subscription Availability
asc subscription-availability get --subscription-id <SUB_ID> [--pretty]
Create Subscription Availability
asc subscription-availability create \
  --subscription-id <SUB_ID> \
  --available-in-new-territories \
  --territory USA \
  --territory GBR
FlagRequiredDescription
--subscription-idYesSubscription ID to set availability for
--available-in-new-territoriesNoAuto-include new territories Apple adds
--territoryNoTerritory ID (repeatable)

CAEOAS Affordances

Every availability response includes ready-to-run follow-up commands:

{
  "affordances": {
    "getAvailability": "asc iap-availability get --iap-id <ID>",
    "createAvailability": "asc iap-availability create --iap-id <ID> ...",
    "listTerritories": "asc territories list"
  }
}

The InAppPurchase and Subscription models also include a getAvailability affordance for navigation from the parent resource.

Resolve App ID

See project-context.md — check .asc/project.json before asking the user or running asc apps list.

Typical Workflow

APP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')

# 1. Discover territories
asc territories list --output table

# 2. List IAPs for the app
asc iap list --app-id "$APP_ID"

# 3. Check current availability
asc iap-availability get --iap-id "$IAP_ID" --pretty

# 4. Set availability to specific territories with auto-include for future ones
asc iap-availability create --iap-id "$IAP_ID" \
  --available-in-new-territories \
  --territory USA --territory GBR --territory DEU --territory JPN

# Same flow for subscriptions:
asc subscriptions list --group-id "$GROUP_ID"
asc subscription-availability get --subscription-id "$SUB_ID"
asc subscription-availability create --subscription-id "$SUB_ID" \
  --available-in-new-territories \
  --territory USA --territory CHN

Key Concepts

  • Territory ID: ISO-style country code used by App Store Connect (e.g. USA, CHN, JPN, GBR). Use asc territories list to see all valid IDs.
  • isAvailableInNewTerritories: When true, Apple automatically makes the IAP/subscription available in any new territory they add. Recommended for most apps unless you need tight regional control.
  • Currency: Each territory has an associated currency (e.g. USD, CNY). Shown alongside territory IDs in availability responses so you know the pricing context.

Comments

Markdown supported