Write tools
The money-moving asa_propose_* tools, and how the safe-apply policy decides what applies.
Every write is a asa_propose_* tool. None of them mutate Apple directly — they run through
propose → validate → policy → action. Bounded, low-risk changes auto-apply; the rest queue in
Approvals. The result reports a mode (auto_applied or queued) plus
policyReasons. Read the safe-apply policy before relying on
auto-apply.
Budgets & bids
| Tool | Purpose |
|---|---|
asa_propose_budget_change | Change a campaign's daily budget. Raises/cuts ≤30% can auto-apply within the CPA band. |
asa_propose_default_bid | Set an ad group's default CPT bid. |
asa_propose_keyword_bid | Set a keyword's CPT bid. Rejected on automated-strategy campaigns. |
asa_propose_cpa_goal | Set an ad-group cpaGoal. One ≤10% step can auto-apply. |
asa_propose_campaign_target_cpa | Set a campaign targetCpa. One ≤10% step can auto-apply. |
asa_propose_campaign_bid_strategy | Switch bid strategy — always review-tier (resets Apple's learning). |
Status
| Tool | Purpose |
|---|---|
asa_propose_campaign_status | Enable / pause a campaign. |
asa_propose_ad_group_status | Enable / pause an ad group. Pause can auto-apply. |
asa_propose_keyword_status | Activate / pause a keyword (ACTIVE|PAUSED). Pause can auto-apply. |
asa_propose_ad_status | Enable / pause an ad. |
Keywords & negatives
| Tool | Purpose |
|---|---|
asa_propose_add_keywords | Add keywords. ≤10 EXACT at bids ≤1.5× 30-day avg CPT can auto-apply. |
asa_propose_add_negative_keywords | Add negatives. Auto-applies. |
asa_propose_remove_negative_keywords | Remove negatives. Auto-applies. |
asa_propose_change_keyword_match_type | "Change" a match type — creates a sibling at the new type and pauses the original (match type is immutable). |
Targeting & structure
| Tool | Purpose |
|---|---|
asa_propose_campaign_geo | Set a campaign's country storefronts. |
asa_propose_ad_group_targeting | Set ad-group targeting (device / gender / age / daypart / geo — set membership, no bid modifiers). |
asa_propose_search_match | Toggle Search Match on an ad group. |
asa_propose_create_campaign | Create a campaign (PAUSED by default). |
asa_propose_create_ad_group | Create an ad group (PAUSED by default). |
asa_propose_clone_campaign | Clone a campaign as a starting point. |
asa_propose_clone_ad_group | Clone an ad group. |
Composite writes (match-type change, create/clone ad group) sequence several Apple calls with
best-effort rollback. Bulk endpoints can return 200 with per-row errors — the result reports
applied-with-warnings when at least one row succeeded, failed when none did.