# 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
| Parameter | Type | Required | Default | Description |
| ------------- | ---------------------------- | ----------- | ------------ | --------------------------------------- |
| `store` | `"appStore" \| "googlePlay"` | No | `"appStore"` | Target store |
| `packageName` | `string` | Conditional | - | Required when `store` is `"googlePlay"` |
### Usage Examples
```json
// 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
| Parameter | Type | Required | Default | Description |
| ------------ | -------------------------------------- | -------- | -------------- | ---------------------------------------- |
| `identifier` | `string` | **Yes** | - | App identifier (bundleId or packageName) |
| `slug` | `string` | No | Auto-generated | Custom slug for the app |
| `store` | `"appStore" \| "googlePlay" \| "both"` | No | `"both"` | Store to search |
### Usage Examples
```json
// 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
```
---
## apps-search
Search registered apps.
### Parameters
| Parameter | Type | Required | Default | Description |
| --------- | ------------------------------------- | -------- | ------- | -------------------------------------------------------------------------- |
| `query` | `string` | No | - | Search term (slug, bundleId, packageName, name). Returns all apps if empty |
| `store` | `"all" \| "appStore" \| "googlePlay"` | No | `"all"` | Filter by store |
### Usage Examples
```json
// 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`:
```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
- [auth-check](./auth.md) - Verify store credentials
- [aso-pull](./aso.md#aso-pull) - Pull ASO data for registered apps