#App Management Tools

Tools for registering and managing apps from App Store Connect and Google Play Console.

#apps-init

Fetch apps from the store API and auto-register them.

#Parameters

ParameterTypeRequiredDefaultDescription
store"appStore" | "googlePlay"No"appStore"Target store
packageNamestringConditional-Required when store is "googlePlay"

#Usage Examples

// Auto-register all App Store apps
{ "store": "appStore" }

// Register a Google Play app (packageName required)
{ "store": "googlePlay", "packageName": "com.example.app" }

#Behavior

  • App Store: Lists all released apps and auto-registers them
  • Google Play: Does not support listing; requires explicit packageName
  • For each app, generates a slug from the last part of bundleId/packageName (e.g., com.example.myapp β†’ myapp)
  • If both stores are configured, checks Google Play availability for App Store apps

#Response

πŸ“± **App Setup Complete**

βœ… **Registered** (2):
  β€’ My App (🍎+πŸ€–) β†’ slug: "myapp"
    🍎 App Store: en-US, ko, ja
    πŸ€– Google Play: en-US, ko, ja

⏭️ **Skipped** (1):
  β€’ Other App (com.example.other) - already registered

#apps-add

Register a single app by bundleId or packageName.

#Parameters

ParameterTypeRequiredDefaultDescription
identifierstringYes-App identifier (bundleId or packageName)
slugstringNoAuto-generatedCustom slug for the app
store"appStore" | "googlePlay" | "both"No"both"Store to search

#Usage Examples

// Register app (searches both stores)
{ "identifier": "com.example.app" }

// Register with custom slug
{ "identifier": "com.example.app", "slug": "myapp" }

// Register Google Play only
{ "identifier": "com.example.app", "store": "googlePlay" }

#Behavior

  • Searches specified store(s) for the app
  • Auto-generates slug from the last part of identifier if not provided
  • Fetches and stores supported locales for each store
  • If app already exists, updates locale information

#Response

New Registration:

βœ… App registration complete (🍎+πŸ€–)

**Registration Info:**
β€’ Slug: `myapp`
β€’ Name: My App
β€’ App Store: com.example.app (ID: 123456789)
β€’ Google Play: com.example.app

**Supported Languages:**
  β€’ App Store locales: en-US, ko, ja
  β€’ Google Play locales: en-US, ko, ja

**Search Results:**
  β€’ 🍎 App Store: βœ… Found (My App) (3 locales)
  β€’ πŸ€– Google Play: βœ… Found (My App) (3 locales)

You can now reference this app in other tools using the `app: "myapp"` parameter.

Already Registered:

⏭️ App is already registered.

β€’ Slug: `myapp`
β€’ Name: My App
β€’ App Store: βœ… com.example.app
β€’ Google Play: βœ… com.example.app

Search registered apps.

#Parameters

ParameterTypeRequiredDefaultDescription
querystringNo-Search term (slug, bundleId, packageName, name). Returns all apps if empty
store"all" | "appStore" | "googlePlay"No"all"Filter by store

#Usage Examples

// List all registered apps
{}

// Search by name or slug
{ "query": "myapp" }

// Filter by store
{ "store": "appStore" }

// Search with store filter
{ "query": "example", "store": "googlePlay" }

#Response

πŸ“‹ Registered app list: 2

πŸ“± **My App** (`myapp`)
   🍎 App Store: `com.example.myapp`
      App ID: 123456789
   πŸ€– Google Play: `com.example.myapp`

πŸ“± **Other App** (`other`)
   🍎 App Store: `com.example.other`
      App ID: 987654321

No Results:

❌ No apps found matching "query".

πŸ’‘ Register apps using apps-add or apps-init tools.

#Registered Apps Storage

Apps are stored in ~/.config/pabal-mcp/registered-apps.json:

{
  "apps": [
    {
      "slug": "myapp",
      "name": "My App",
      "appStore": {
        "bundleId": "com.example.myapp",
        "appId": "123456789",
        "name": "My App",
        "supportedLocales": ["en-US", "ko", "ja"]
      },
      "googlePlay": {
        "packageName": "com.example.myapp",
        "name": "My App",
        "supportedLocales": ["en-US", "ko", "ja"]
      }
    }
  ]
}

#See Also