# Apple Ads MCP (oci · ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6)

Local Apple Ads research, optimization, and receipt-gated App Store campaign management.

- Trust score: 47/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- oci · `ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6`: 47/100 (this document), [markdown](https://verifymcp.io/servers/zelentsov-dev-apple-ads-mcp/ghcr-io-zelentsov-dev-apple-ads-mcp-v0-3-6.md), [page](https://verifymcp.io/servers/zelentsov-dev-apple-ads-mcp/ghcr-io-zelentsov-dev-apple-ads-mcp-v0-3-6)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 19 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 9599 tokens (~87/item across 110 items; 110 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 67/100
  - Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 87% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "ad_delete_preview" implies "delete" and declares readOnlyHint instead, contradicting what its own name says it does.
  - An AI judge read all 111 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Apple Ads MCP server?

Apple Ads MCP runs locally as a container image, launched with docker run --rm -i ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add zelentsov-dev-apple-ads-mcp -- docker run --rm -i ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6
```

### Cursor

```json
{
  "mcpServers": {
    "zelentsov-dev-apple-ads-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "zelentsov-dev-apple-ads-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add zelentsov-dev-apple-ads-mcp -- docker run --rm -i ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "zelentsov-dev-apple-ads-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  zelentsov-dev-apple-ads-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6"]
```

### Netclaw

```json
{
  "McpServers": {
    "zelentsov-dev-apple-ads-mcp": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6"
      ]
    }
  }
}
```

### Other

```json
{
  "mcpServers": {
    "zelentsov-dev-apple-ads-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 47, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 46, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 45, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 44, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-11 (score 43, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-09 (score 42, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-08 (score 41, +3)

- [functional improvement] Stability: unverified → 0.27

### 2026-09-01 (score 38, +8)

- [security improvement] Judged manipulation: unverified → pass
- [functional improvement] Schema quality: unverified → good

## MCP tools (110)

### `account_health` (~62 tokens)

Collect a read-only identity, access, and account baseline.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adamId` (string): optional App Store Adam ID to verify ownership
- `profile` (string, required): local Apple Ads profile name

### `ad_account_get` (~51 tokens)

Read sanitized account currency, timezone, payment model, features, and delegations.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `profile` (string, required): local Apple Ads profile name

### `ad_accounts_list` (~32 tokens)

Discover Apple Ads account ACLs available to a profile.

Input parameters:

- `profile` (string, required): local Apple Ads profile name

### `ad_create_preview` (~54 tokens)

Preview creation of one ad.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `payload` (object, required): typed create payload for the resource
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_delete_preview` (~68 tokens)

Preview irreversible deletion of one ad under a paused campaign.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `expectedText` (string, required): exact current resource name or keyword text
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_get` (~67 tokens)

Read one ad by ID for current-state verification.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adId` (string): ad ID as a string
- `id` (string): legacy ad ID
- `profile` (string, required): local Apple Ads profile name

### `ad_group_bid_preview` (~86 tokens)

Preview an ad-group default bid update with decimal amount and currency.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string, required): ad group ID as a string
- `amount` (string, required): decimal bid amount
- `currency` (string, required): ISO 4217 currency
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_cpa_cap_preview` (~88 tokens)

Preview an ad-group CPA cap update with decimal amount and currency.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string, required): ad group ID as a string
- `amount` (string, required): decimal bid amount
- `currency` (string, required): ISO 4217 currency
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_create_preview` (~56 tokens)

Preview creation of one ad group.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `payload` (object, required): typed create payload for the resource
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_delete_preview` (~70 tokens)

Preview irreversible deletion of one ad group under a paused campaign.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `expectedText` (string, required): exact current resource name or keyword text
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_get` (~72 tokens)

Read one ad group by ID for current-state verification.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string): ad group ID as a string
- `id` (string): legacy ad group ID
- `profile` (string, required): local Apple Ads profile name

### `ad_group_pause_preview` (~50 tokens)

Preview pausing one ad group.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_report` (~132 tokens)

Read bounded ad-group performance rows.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `ad_group_resume_preview` (~50 tokens)

Preview resuming one ad group.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_schedule_preview` (~71 tokens)

Preview an ad-group start and end schedule update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `endTime` (null|string)
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name
- `startTime` (null|string)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_search_match_preview` (~67 tokens)

Preview enabling or disabling Apple Search Match for a Search Results ad group.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string, required)
- `enabled` (boolean, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_targeting_preview` (~61 tokens)

Preview App Store-only ad-group targeting.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string, required)
- `profile` (string, required): local Apple Ads profile name
- `targeting` (object, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_group_update_preview` (~66 tokens)

Preview an ad-group update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required): target resource ID as a string
- `payload` (object, required): typed fields to update
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_groups_query` (~172 tokens)

Query bounded ad groups with endpoint-specific filters.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string): exact ad group ID shortcut
- `campaignId` (string): campaign scope shortcut
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `id` (string): legacy exact ad group ID shortcut
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `ad_pause_preview` (~48 tokens)

Preview pausing one ad.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_report` (~130 tokens)

Read bounded ad performance rows.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `ad_resume_preview` (~48 tokens)

Preview resuming one ad.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ad_update_preview` (~64 tokens)

Preview an ad update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required): target resource ID as a string
- `payload` (object, required): typed fields to update
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `ads_query` (~180 tokens)

Query bounded ads with endpoint-specific filters.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string): ad group scope shortcut
- `adId` (string): exact ad ID shortcut
- `campaignId` (string): campaign scope shortcut
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `id` (string): legacy exact ad ID shortcut
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `advertiser_resources_list` (~47 tokens)

List App Store content-provider delegations available to a profile.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `profile` (string, required): local Apple Ads profile name

### `app_locale_details` (~185 tokens)

Query compact locale metadata, or full assets for one required languageCode.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adamId` (string, required): App Store Adam ID as a string
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `includeAssets` (boolean): include full assets for one required languageCode
- `languageCode` (string): optional exact locale such as en-US
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `app_opportunities` (~89 tokens)

Collect independently classified eligibility and suggestion sections for an app.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adamId` (string, required): App Store Adam ID as a string
- `countriesOrRegions` (null|array, required): ISO country or region codes
- `profile` (string, required): local Apple Ads profile name
- `terms` (null|array): optional seed terms

### `app_rejection_reason_get` (~61 tokens)

Read one App Store app rejection reason.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `profile` (string, required): local Apple Ads profile name
- `rejectionReasonId` (string, required): app rejection reason ID as a string

### `app_rejection_reasons_query` (~136 tokens)

Query bounded App Store app rejection reasons.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `app_store_geo_search` (~139 tokens)

Search eligible App Store countries, administrative areas, and localities.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `countryCode` (string): ISO 3166-1 alpha-2 country code
- `eligible` (boolean): exclude soft-blocked geos
- `entity` (string): Country, AdminArea, or Locality
- `offset` (integer): zero-based result offset
- `pageSize` (integer): page size from 1 to 200
- `profile` (string, required): local Apple Ads profile name
- `query` (string): geo search text with at least two characters or *

### `apps_eligibility` (~132 tokens)

Check App Store advertising eligibility.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `apps_get` (~58 tokens)

Read an App Store app by Adam ID.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adamId` (string, required): App Store Adam ID as a string
- `profile` (string, required): local Apple Ads profile name

### `apps_search` (~142 tokens)

Search apps; an empty result for a non-ASCII owned-app query gets one bounded exact-name fallback.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `cpids` (null|array): optional iTunes content provider IDs
- `limit` (integer): result limit from 1 to 200
- `offset` (integer): zero-based result offset
- `profile` (string, required): local Apple Ads profile name
- `query` (string): app name or Adam ID search text
- `returnOwnedApps` (boolean, required): limit results to apps owned by the organization
- `storefronts` (null|array): ISO storefront country codes

### `auth_check` (~29 tokens)

Validate OAuth credentials and return the caller identity.

Input parameters:

- `profile` (string, required): local Apple Ads profile name

### `campaign_audit` (~140 tokens)

Collect campaign, ad-group, keyword, and search-term report baselines.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `campaign_bid_strategy_preview` (~68 tokens)

Preview MANUAL_CPT or eligible App Store Search Results MAX_CONVERSIONS strategy.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string, required)
- `profile` (string, required): local Apple Ads profile name
- `strategy` (object, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_countries_preview` (~59 tokens)

Preview replacing campaign country targeting.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string, required)
- `countries` (null|array, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_create_preview` (~60 tokens)

Preview creation of one campaign and return a ten-minute receipt.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `payload` (object, required): typed create payload for the resource
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_daily_budget_preview` (~61 tokens)

Preview a campaign daily-budget update with typed money.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `amount` (object, required)
- `campaignId` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_delete_preview` (~69 tokens)

Preview irreversible deletion of one paused campaign and its cascade inventory.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `expectedText` (string, required): exact current resource name or keyword text
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_get` (~67 tokens)

Read one campaign by ID for current-state verification.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string): campaign ID as a string
- `id` (string): legacy campaign ID
- `profile` (string, required): local Apple Ads profile name

### `campaign_inventory` (~76 tokens)

Read a campaign and bounded child inventory for safe auditing.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string, required): campaign ID as a string
- `pageSize` (integer): maximum children per resource from 1 to 200
- `profile` (string, required): local Apple Ads profile name

### `campaign_pause_preview` (~54 tokens)

Preview pausing one campaign.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string, required): campaign ID as a string
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_report` (~130 tokens)

Read bounded campaign performance rows.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `campaign_resume_preview` (~54 tokens)

Preview resuming one campaign.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string, required): campaign ID as a string
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_schedule_preview` (~69 tokens)

Preview a campaign start and end schedule update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `endTime` (null|string)
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name
- `startTime` (null|string)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_shared_budget_assign_preview` (~64 tokens)

Preview assigning one LOC shared budget to one campaign.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string, required)
- `profile` (string, required): local Apple Ads profile name
- `sharedBudgetId` (string, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_shared_budget_unassign_preview` (~65 tokens)

Preview removing one shared-budget assignment from one campaign.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string, required)
- `profile` (string, required): local Apple Ads profile name
- `sharedBudgetId` (string, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaign_status_reason_details` (~58 tokens)

Read App Store campaign limited-status reason details.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string, required): campaign ID as a string
- `profile` (string, required): local Apple Ads profile name

### `campaign_update_preview` (~68 tokens)

Preview a campaign update after reading current state.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required): target resource ID as a string
- `payload` (object, required): typed fields to update
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `campaigns_query` (~156 tokens)

Query bounded campaigns with endpoint-specific filters.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `campaignId` (string): exact campaign ID shortcut
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `id` (string): legacy exact campaign ID shortcut
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `category_suggestions` (~134 tokens)

Get category opportunities for an App Store app.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `change_history` (~360 tokens)

Read bounded Apple Ads change history for a required typed event window.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adAccountIds` (null|array): optional audited ad account IDs
- `adGroupIds` (null|array): optional parent ad group IDs
- `campaignIds` (null|array): optional parent campaign IDs
- `end` (string, required): required event window end date in YYYY-MM-DD
- `entityIds` (null|array): optional changed entity IDs
- `entityTypes` (null|array): optional Apple audit entity types
- `eventTypes` (null|array): CREATE, UPDATE, or DELETE
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `metadata` (string): none, latest, or snapshot; defaults to latest
- `needTotals` (null|boolean): request accurate totalCount; Apple defaults to true
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `start` (string, required): required event window start date in YYYY-MM-DD
- `timeRange` (null|object): report or insight time range
- `timeZone` (string): UTC or ORTZ; defaults to UTC
- `transactionIds` (null|array): optional audit transaction IDs
- `userIds` (null|array): optional Apple Ads user IDs
- `userTypes` (null|array): CUSTOMER, CUSTOMER_API, or APPLE_SUPPORT

### `change_history_detail` (~83 tokens)

Read bounded field-level details for one change-history entry.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `detailId` (string, required): change detail ID
- `limit` (integer): result limit from 1 to 200
- `offset` (integer): zero-based result offset
- `profile` (string, required): local Apple Ads profile name

### `creative_create_preview` (~54 tokens)

Preview creation of one creative.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `payload` (object, required): typed create payload for the resource
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `creative_delete_preview` (~67 tokens)

Preview irreversible deletion of one unreferenced creative.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `expectedText` (string, required): exact current resource name or keyword text
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `creative_get` (~67 tokens)

Read one creative by ID for current-state verification.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `creativeId` (string): creative ID as a string
- `id` (string): legacy creative ID
- `profile` (string, required): local Apple Ads profile name

### `creative_update_preview` (~64 tokens)

Preview a creative update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required): target resource ID as a string
- `payload` (object, required): typed fields to update
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `creatives_query` (~158 tokens)

Query bounded App Store creatives with endpoint-specific filters.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `creativeId` (string): exact creative ID shortcut
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `id` (string): legacy exact creative ID shortcut
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `daily_budget_recommendation_apply_preview` (~87 tokens)

Preview applying one daily-budget recommendation under an explicit maximum.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `appliedAmount` (null|object)
- `maximumAmount` (null|object)
- `profile` (string, required): local Apple Ads profile name
- `promotedObjectId` (string, required)
- `recommendationId` (string, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `daily_budget_recommendation_dismiss_preview` (~85 tokens)

Preview dismissing one daily-budget recommendation.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `appliedAmount` (null|object)
- `maximumAmount` (null|object)
- `profile` (string, required): local Apple Ads profile name
- `promotedObjectId` (string, required)
- `recommendationId` (string, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `daily_budget_recommendations` (~135 tokens)

Read daily-budget recommendations without applying them.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `impression_share` (~141 tokens)

Read app impression-share insights through a typed UTC request.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adamId` (string, required): promoted app Adam ID as a string
- `country` (string): optional ISO country or region code
- `end` (string, required): range end in YYYY-MM-DD
- `granularity` (string, required): DAILY or WEEKLY_SUN_SAT
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `reportType` (string, required): FIRST_SLOT or ALL_SLOTS
- `start` (string, required): range start in YYYY-MM-DD

### `keyword_bid_preview` (~83 tokens)

Preview a targeting keyword bid update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string): optional parent ad group assertion
- `bid` (object, required)
- `campaignId` (string): optional parent campaign assertion
- `keywordId` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `keyword_create_preview` (~55 tokens)

Preview creation of one targeting keyword.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `payload` (object, required): typed create payload for the resource
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `keyword_delete_preview` (~68 tokens)

Preview irreversible deletion of one keyword under a paused campaign.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `expectedText` (string, required): exact current resource name or keyword text
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `keyword_get` (~68 tokens)

Read one targeting keyword by ID for current-state verification.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string): legacy keyword ID
- `keywordId` (string): keyword ID as a string
- `profile` (string, required): local Apple Ads profile name

### `keyword_pause_preview` (~49 tokens)

Preview pausing one targeting keyword.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `keyword_report` (~158 tokens)

Read bounded keyword performance rows, optionally including EMPTY_METRICS.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `includeZeroMetrics` (boolean): include keywords with no metric rows by requesting EMPTY_METRICS
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `keyword_resume_preview` (~49 tokens)

Preview resuming one targeting keyword.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `keyword_suggestions` (~134 tokens)

Get keyword opportunities for an App Store app.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `keyword_update_preview` (~65 tokens)

Preview a targeting keyword update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required): target resource ID as a string
- `payload` (object, required): typed fields to update
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `keywords_bulk_create_preview` (~75 tokens)

Preview up to 100 same- or cross-group keyword creates as one Apple bulk request and aggregate receipt.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string, required)
- `items` (null|array, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `keywords_bulk_update_preview` (~68 tokens)

Preview up to 100 targeting keyword updates as one drift-bound operation.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string, required)
- `items` (null|array, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `keywords_query` (~184 tokens)

Query bounded targeting-keyword inventory with a required typed scope.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string): ad group scope shortcut
- `campaignId` (string): campaign scope shortcut
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `id` (string): legacy exact keyword ID shortcut
- `keywordId` (string): exact keyword ID shortcut
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `negative_keyword_create_preview` (~56 tokens)

Preview creation of one negative keyword.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `payload` (object, required): typed create payload for the resource
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `negative_keyword_delete_preview` (~70 tokens)

Preview irreversible deletion of one negative keyword under a paused campaign.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `expectedText` (string, required): exact current resource name or keyword text
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `negative_keyword_get` (~72 tokens)

Read one negative keyword by ID for current-state verification.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string): legacy negative keyword ID
- `negativeKeywordId` (string): negative keyword ID as a string
- `profile` (string, required): local Apple Ads profile name

### `negative_keyword_update_preview` (~66 tokens)

Preview a negative keyword update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string, required): target resource ID as a string
- `payload` (object, required): typed fields to update
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `negative_keywords_bulk_create_preview` (~75 tokens)

Preview up to 100 negative keyword creates in one scope.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string)
- `campaignId` (string)
- `items` (null|array, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `negative_keywords_bulk_update_preview` (~75 tokens)

Preview up to 100 negative keyword updates in one scope.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string)
- `campaignId` (string)
- `items` (null|array, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `negative_keywords_query` (~200 tokens)

Query bounded negative-keyword inventory with a valid campaign or ad-group scope.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `adGroupId` (string): ad group scope shortcut
- `campaignId` (string): campaign scope shortcut; without adGroupId selects campaign-level negatives
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `id` (string): legacy exact negative keyword ID shortcut
- `negativeKeywordId` (string): exact negative keyword ID shortcut
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `operations_apply` (~36 tokens)

Apply exactly one non-expired, drift-free preview receipt.

Input parameters:

- `receipt` (string, required): one-time operation receipt returned by a preview tool

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `receipt` (null|object)
- `summary` (string)
- `used` (boolean)
- `verification` (null|object)

### `operations_inspect` (~38 tokens)

Inspect receipt binding, expiry, and use state without applying it.

Input parameters:

- `receipt` (string, required): one-time operation receipt returned by a preview tool

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `receipt` (null|object)
- `summary` (string)
- `used` (boolean)
- `verification` (null|object)

### `operations_verify` (~44 tokens)

Re-read receipt targets after an ambiguous write, including restart-safe optimization recovery, and return current state.

Input parameters:

- `receipt` (string, required): one-time operation receipt returned by a preview tool

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `receipt` (null|object)
- `summary` (string)
- `used` (boolean)
- `verification` (null|object)

### `optimization_baseline` (~57 tokens)

Build a bounded 28-day Apple Ads performance baseline for a named policy.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `policy` (string, required)
- `profile` (string, required): local Apple Ads profile name

### `optimization_history` (~53 tokens)

Read bounded local decisions and verification history for a named policy.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `policy` (string, required)
- `profile` (string, required): local Apple Ads profile name

### `optimization_plan` (~53 tokens)

Build an on-demand bounded optimization plan without creating a receipt.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `policy` (string, required)
- `profile` (string, required): local Apple Ads profile name

### `optimization_plan_preview` (~56 tokens)

Build and bind one bounded active-policy optimization plan to a composite receipt.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `policy` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `optimization_policies_list` (~21 tokens)

List named local optimization policies without credentials or account data.

### `optimization_policy_get` (~52 tokens)

Read one named optimization policy with resolved balanced thresholds.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `policy` (string, required)
- `profile` (string, required): local Apple Ads profile name

### `org_get` (~38 tokens)

Read one Apple Ads organization.

Input parameters:

- `orgId` (string, required): Apple Ads organization ID
- `profile` (string, required): local Apple Ads profile name

### `phrase_suggestions` (~134 tokens)

Get phrase opportunities for an App Store app.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `product_page_get` (~60 tokens)

Read a Default or Custom Product Page by ID.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `productPageId` (string, required): Default or Custom Product Page ID
- `profile` (string, required): local Apple Ads profile name

### `product_page_locales` (~133 tokens)

Query bounded Product Page locale details.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `product_pages_query` (~133 tokens)

Query bounded Default and Custom Product Pages.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `profiles_list` (~16 tokens)

List configured profile names without exposing credentials.

### `search_term_popularity` (~132 tokens)

Read search-term popularity insights.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `search_term_report` (~132 tokens)

Read bounded search-term performance rows.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `server_info` (~22 tokens)

Show server version, safety mode, API family, and response limits.

### `shared_budget_create_preview` (~87 tokens)

Preview LOC shared-budget creation using a private local billing profile.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `billingProfile` (string, required)
- `endTime` (null|string)
- `name` (string, required)
- `profile` (string, required): local Apple Ads profile name
- `startTime` (string, required)
- `value` (object, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `shared_budget_delete_preview` (~69 tokens)

Preview irreversible deletion of one unassigned LOC shared budget.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `expectedText` (string, required): exact current resource name or keyword text
- `id` (string, required)
- `profile` (string, required): local Apple Ads profile name

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `shared_budget_get` (~72 tokens)

Read one shared budget by ID for current-state verification.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `id` (string): legacy shared budget ID
- `profile` (string, required): local Apple Ads profile name
- `sharedBudgetId` (string): shared budget ID as a string

### `shared_budget_update_preview` (~96 tokens)

Preview a typed LOC shared-budget update.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `billingProfile` (string)
- `endTime` (null|string)
- `name` (null|string)
- `profile` (string, required): local Apple Ads profile name
- `sharedBudgetId` (string, required)
- `startTime` (null|string)
- `value` (null|object)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `shared_budgets_query` (~163 tokens)

Query bounded shared-budget metadata without invoice contacts.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `id` (string): legacy exact shared budget ID shortcut
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sharedBudgetId` (string): exact shared budget ID shortcut
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `supported_app_languages` (~133 tokens)

Query bounded App Store advertising language metadata.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `target_cpa_recommendation_apply_preview` (~89 tokens)

Preview applying one target-CPA recommendation under an explicit maximum.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `appliedAmount` (null|object)
- `maximumAmount` (null|object)
- `profile` (string, required): local Apple Ads profile name
- `promotedObjectId` (string, required)
- `recommendationId` (string, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `target_cpa_recommendation_dismiss_preview` (~87 tokens)

Preview dismissing one target-CPA recommendation.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `appliedAmount` (null|object)
- `maximumAmount` (null|object)
- `profile` (string, required): local Apple Ads profile name
- `promotedObjectId` (string, required)
- `recommendationId` (string, required)

Output parameters:

- `error` (null|object)
- `preview` (null|object)
- `summary` (string)

### `target_cpa_recommendations` (~137 tokens)

Read target-CPA recommendations without applying them.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

### `target_cpa_suggestions` (~132 tokens)

Get target CPA suggestions.

Input parameters:

- `adAccountId` (string, required): Apple Ads ad account ID
- `fields` (null|array): report fields to return
- `filters` (null|array): endpoint-specific filter conditions
- `groupBy` (null|array): report dimensions
- `options` (null|object): report or insight options
- `pagination` (null|object): bounded result window
- `profile` (string, required): local Apple Ads profile name
- `sorting` (null|array): ordered sort fields
- `timeRange` (null|object): report or insight time range

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/zelentsov-dev-apple-ads-mcp/ghcr-io-zelentsov-dev-apple-ads-mcp-v0-3-6#diagnostics

## Score history

- 2026-09-20: 47
- 2026-09-19: 46
- 2026-09-18: 46
- 2026-09-17: 46
- 2026-09-16: 45
- 2026-09-15: 45
- 2026-09-14: 44
- 2026-09-13: 44
- 2026-09-12: 43
- 2026-09-11: 43
- 2026-09-10: 42
- 2026-09-09: 42
- 2026-09-08: 41
- 2026-09-07: 38
- 2026-09-06: 38
- 2026-09-05: 38
- 2026-09-04: 38
- 2026-09-03: 38
- 2026-09-02: 38
- 2026-09-01: 38
- 2026-08-31: 30

## Common questions

### What is the Apple Ads MCP server?

Apple Ads MCP is listed in the public MCP registry as io.github.zelentsov-dev/apple-ads-mcp. Local Apple Ads research, optimization, and receipt-gated App Store campaign management. This page covers its container image (ghcr.io/zelentsov-dev/apple-ads-mcp:v0.3.6).

### Is the Apple Ads MCP server safe to use?

Apple Ads MCP scores 47 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Apple Ads MCP server expose?

Apple Ads MCP exposes 110 tools: account_health, ad_account_get, ad_accounts_list, ad_create_preview, ad_delete_preview, and 105 more. Their descriptions and schemas cost roughly 9,561 tokens of context every time the server is loaded.

### Is the Apple Ads MCP server still maintained?

Apple Ads MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Apple Ads MCP server under?

Apple Ads MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- Repository: https://github.com/zelentsov-dev/apple-ads-mcp
- Changelog RSS feed: https://verifymcp.io/servers/zelentsov-dev-apple-ads-mcp/ghcr-io-zelentsov-dev-apple-ads-mcp-v0-3-6.xml
- Changelog JSON feed: https://verifymcp.io/servers/zelentsov-dev-apple-ads-mcp/ghcr-io-zelentsov-dev-apple-ads-mcp-v0-3-6.json
- HTML version of this page: https://verifymcp.io/servers/zelentsov-dev-apple-ads-mcp/ghcr-io-zelentsov-dev-apple-ads-mcp-v0-3-6
