Authenticate with OAuth 2.0 and set the developer-token and login-customer-id headers for the Google Ads API v23
Create a CampaignBudget resource with amount_micros and delivery_method set to STANDARD using CampaignBudgetService.MutateCampaignBudgets
Create a Campaign resource with advertising_channel_type=PERFORMANCE_MAX, the budget resource name, and a bidding strategy (e.g. target_roas or maximize_conversion_value) using CampaignService.MutateCampaigns
Create an Asset Group under the campaign with a final_url, headline assets, description assets, and image assets attached via AssetGroupService.MutateAssetGroups
Attach listing group filters for All Products using AssetGroupListingGroupFilterService if running a shopping feed
Verify campaign status via a GAQL query on the campaign resource and check asset_group.status to confirm ENABLED before going live
Known gotchas
Performance Max campaigns require at least one Asset Group before they can serve; creating the campaign alone is not sufficient to activate delivery
Image assets must meet minimum size requirements (e.g. landscape at least 600x314) and are validated asynchronously — asset_group.status may show PENDING_REVIEW before assets clear
You cannot mix Performance Max with standard Search or Shopping campaigns sharing the same budget; the budget object must be exclusive to the PMax campaign
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp