Skip to main content
Glama
AppVisionOS

Apple Ads MCP

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ASA_KEY_IDNoKey ID for the generated API client
ASA_ORG_IDNoOptional default organization ID, can be overridden per call
ASA_TEAM_IDNoTeam ID for Apple Ads API, e.g. SEARCHADS.xxxx
ASA_CLIENT_IDNoClient ID for Apple Ads API, e.g. SEARCHADS.xxxx
ASA_PRIVATE_KEYNoInline PEM content of the private key (with escaped newlines if in JSON)
ASA_PRIVATE_KEY_PATHNoAbsolute path to the private key file (PKCS#8 format)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
org_aclsA

List all org-level ACLs (orgs your API user can access, with orgName / currency / paymentModel / roleNames). Use this to discover the orgId for ASA_ORG_ID. Does not require X-AP-Context.

me_userA

Return information about the calling API user (userId, parentOrgId).

search_appsA

Search the App Store for apps to target / advertise. Returns adamId, name, developerName, and country availability. You need adamId to create campaigns.

search_geoB

Search geo entities by name (Country / AdminArea / Locality). Pass countrycode (lowercase, Apple's quirk) to scope an admin-area or locality search to one country.

geo_lookupA

Resolve geos by raw IDs. Each request item is { id: 'CountryCode|adminArea|locality', entity: 'Country|AdminArea|Locality' }. Useful when a report returns geo IDs you want named.

apps_getC

Fetch App Store metadata for an app: appName, developerName, primaryGenre, secondaryGenre, iconPictureUrl, availableStorefronts, deviceClasses, etc.

apps_locale_detailsB

Get localized default product-page details for an app (subtitle, short description, screenshots, app preview) per locale.

apps_eligibilities_findA

Find app-eligibility records by selector (filterable by supplySource, countryOrRegion, deviceClass, state).

apps_assets_findB

Find App Store screenshots / app-preview assets for an app — returns assetGenIds you can use to author creatives or audit rejected assets.

creative_app_preview_devicesA

List supported app-preview device-size mappings (e.g. IPHONE_61, IPAD_129). Used when authoring creatives or interpreting screenshot/preview metadata.

countries_or_regions_listA

List supported countries / regions with their default and supported product-page languages.

cpp_listC

List Custom Product Pages for an app.

cpp_getB

Fetch a single Custom Product Page by ID.

cpp_locale_detailsB

List the locales available for a Custom Product Page (with localized assets per locale).

campaigns_createB

Create a new campaign. The minimum useful body specifies adamId, name, countriesOrRegions, adChannelType, supplySources, billingEvent, and a budget.

campaigns_getB

Fetch a single campaign by ID.

campaigns_listA

List all campaigns in the org (paginated). For richer filtering use campaigns_find.

campaigns_findA

Search campaigns with a selector — supports conditions (EQUALS/IN/CONTAINS/...), orderBy, and pagination.

campaigns_updateA

Update a campaign. Pass only the fields you want to change. Use clearGeoTargetingOnCountryOrRegionChange=true if you change countriesOrRegions.

campaigns_deleteB

Permanently delete a campaign. Cannot be undone.

adgroups_createB

Create an ad group within a campaign. Bid + targeting live here, not on the campaign.

adgroups_getC

Fetch a single ad group.

adgroups_listC

List all ad groups in a campaign (paginated).

adgroups_find_in_campaignA

Find ad groups within a single campaign using a selector.

adgroups_find_org_wideA

Find ad groups across the entire org with a selector.

adgroups_updateC

Update an ad group. Pass only the fields you want to change.

adgroups_deleteC

Delete an ad group.

creatives_createC

Create a creative (a reference to a default product page, custom product page, or creative set). Ads bind to creatives via creativeId.

creatives_listB

List all creatives in the org (paginated).

creatives_getB

Fetch a single creative by ID.

creatives_findC

Find creatives across the org with a selector.

ads_createB

Create an ad inside an ad group. Ads bind a Creative (creativeId) to the ad group; the creative itself can wrap a Custom Product Page, Default Product Page, or Creative Set reference.

ads_getC

Fetch a single ad by ID.

ads_listB

List all ads in an ad group.

ads_find_in_campaignA

Find ads across all ad groups in a campaign with a selector.

ads_find_org_wideB

Find ads across the entire org with a selector.

ads_updateB

Update an ad — typically status, name, or repointing to a different creativeId.

ads_deleteC

Delete an ad.

targeting_keywords_createB

Bulk-create targeting (positive) keywords on an ad group. Pass up to 1000 per call.

targeting_keywords_getC

Fetch a single targeting keyword by ID.

targeting_keywords_listB

List targeting keywords on an ad group (paginated).

targeting_keywords_findA

Find targeting keywords across all ad groups in a campaign with a selector. Apple does not expose a per-ad-group find — filter by adGroupId in the selector if needed.

targeting_keywords_updateB

Bulk-update targeting keywords (status, bid, text, matchType). Each entry must include id.

targeting_keywords_deleteC

Bulk-delete targeting keywords by ID.

targeting_keywords_delete_singleB

Delete a single targeting keyword by ID (uses Apple's REST DELETE variant).

adgroup_negative_keywords_createC

Bulk-create negative keywords on an ad group.

adgroup_negative_keywords_getB

Fetch a single ad-group-level negative keyword by ID.

adgroup_negative_keywords_listB

List ad-group-level negative keywords (paginated).

adgroup_negative_keywords_findB

Find ad-group-level negative keywords across all ad groups in a campaign with a selector.

adgroup_negative_keywords_updateC

Bulk-update ad-group-level negative keywords. Each entry must include id.

adgroup_negative_keywords_deleteB

Bulk-delete ad-group-level negative keywords by ID.

campaign_negative_keywords_createB

Bulk-create campaign-level negative keywords (apply across all ad groups).

campaign_negative_keywords_getB

Fetch a single campaign-level negative keyword by ID.

campaign_negative_keywords_listC

List campaign-level negative keywords (paginated).

campaign_negative_keywords_findB

Find campaign-level negative keywords within a single campaign with a selector.

campaign_negative_keywords_updateC

Bulk-update campaign-level negative keywords.

campaign_negative_keywords_deleteC

Bulk-delete campaign-level negative keywords by ID.

reports_campaignsA

Campaign-level performance report. Returns rows with impressions, taps, installs, spend, CPT/CPM/CPI, conversion rate, etc. Pass groupBy to pivot by country, device, age, gender.

reports_adgroupsC

Ad-group-level report within a single campaign.

reports_keywords_in_campaignC

Keyword report rolled up across all ad groups in one campaign.

reports_keywords_in_adgroupC

Keyword report scoped to a single ad group.

reports_search_terms_in_campaignB

Search-terms report rolled up across all ad groups in a campaign. Reveals what users actually typed — harvest new keywords or negatives from here.

reports_search_terms_in_adgroupC

Search-terms report scoped to a single ad group.

reports_ads_in_campaignB

Ad-level performance (per Custom Product Page / creative variation) rolled up across the campaign.

custom_reports_createB

Create an Impression Share (Share of Voice) report — async. Returns a reportId you poll with custom_reports_get until state=COMPLETED.

custom_reports_getA

Fetch a single Impression Share report — poll until state=COMPLETED to read rows (rank, impressionShare, lowImpressionShare, highImpressionShare, searchPopularity).

custom_reports_listB

List all Impression Share reports created in the org.

budget_orders_createB

Create a budget order (LOC accounts only). Wraps Apple's {bo, orgIds} envelope.

budget_orders_getB

Fetch a single budget order by ID.

budget_orders_listB

List all budget orders in the org (paginated).

budget_orders_updateC

Update a budget order. Most fields are editable post-creation; status is read-only. v5 has no delete endpoint for budget orders.

product_page_reasons_findB

Find ad-creative rejection reasons (filterable by adamId, productPageId, assetGenId, countryOrRegion, languageCode, supplySource, reasonLevel). Use this to audit why a creative was rejected by Apple's review team.

product_page_reasons_getB

Fetch a single rejection reason by ID.

apple_search_ads_requestA

Escape hatch: call any Apple Search Ads endpoint by method + path. Authentication and org context are handled for you. Use only if no dedicated tool covers the endpoint you need.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AppVisionOS/apple-search-ads-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server