---
name: manage-a-campaign
description: Review and manage an existing Interchange buyer campaign. Use when a user asks about campaign status, delivery, spend, pacing, an existing campaign's creatives, blockers, launch, pause, archive, budget or flight changes, troubleshooting, or what needs attention.
---

# Manage a Campaign

Ground every recommendation and change in the current campaign, delivery, and creative records from the attached Interchange V3 buyer server.

## Workflow

1. Call `get_status` and confirm the active buyer account.
2. Use `search` to find the intended campaign and `get` with `include: ["mediaBuys", "creatives"]` to read its current revision, phase, flight, budget, media buys, creatives, and blockers. Ask the user to choose if more than one campaign matches.
3. For live delivery questions, call `get_delivery` with `report: "live_campaign_delivery"`, the exact campaign ID, and an explicit inclusive UTC `range` no longer than 90 days. Do not pass metrics, dimensions, other filters, or a cursor. The response preserves the validated live provider payload. Use `campaign_delivery` only when the user asks for stored aggregate rows.
4. Report the provider reporting period, currency, totals, warnings, and missing values. A live provider response does not establish reporting-pipeline finality or billing eligibility. Distinguish observed facts from recommendations; do not turn missing measurement into zero performance.
5. Inspect related creatives or creative collections with `search` and `get` when readiness or delivery indicates a creative issue. Do not claim approval, attachment, or provider propagation unless returned evidence proves it.
   - For a local JPEG, PNG, or eligible MP4, call `upload_creative_asset` with the exact buyer-owned `advertiserId`. When the upload is intended for a campaign, also pass `campaign_composition` with its exact `campaign_id` and matching `advertiser_id`; that context does not itself associate the upload. The Task app, not the model, handles the file bytes.
   - After the Task finalizes a JPEG or PNG and returns its private source reference, use `save_creative` with that exact `sourceAssetRef` and either the intended `campaignId` or, for an advertiser-scoped Creative, `advertiserId` after confirmation. A finalized MP4 is upload-only on V3: do not call `save_creative`, claim a Creative or campaign attachment exists, claim delivery, or silently substitute a V2 write.
   - A supplied URL or other external asset is not accepted by this Task. State that boundary and stop. Treat an already-existing provider-scoped V2 source as a separate Legacy request: stop and hand off to its matching V2 connection; never reinterpret V3 output as provider-bound.
6. Explain what needs attention and propose the smallest supported change. Before any write, show the exact target, current revision, requested fields, expected effect, and material risk.
7. After confirmation:
   - Use `save_campaign` for supported campaign changes with the current `expectedRevision` and a stable idempotency key. Reuse that key only when retrying the exact same intent.
   - To launch, first call `save_campaign` with `desiredPhase: "active"` and without `confirmLaunch`. Show the returned preview, obtain confirmation, then call it again with `confirmLaunch: true`, the preview's revision as `expectedRevision`, and the required idempotency key.
   - Use `save_creative` or `save_creative_collection` for confirmed creative changes with exact IDs.
   - Treat campaign or creative archival and financial changes as destructive; require explicit confirmation immediately before the call.
8. Read the updated campaign and relevant delivery evidence again. Report the observed result, warnings, partial writes, downstream errors, and unresolved actions.

## Safety rules

- Never invent IDs, revisions, metrics, statuses, prices, or causal explanations.
- Do not silently retry a non-idempotent mutation. Re-read state before deciding whether a retry is safe.
- Never broaden a requested budget, flight, seller, creative, or campaign change.
- Do not claim success from prose alone; require a successful tool result and verify the resulting state.
- If the requested operation is unavailable in the current tool catalog, state the boundary and offer the nearest supported read or next action.
- Campaign cancellation and unarchiving are not supported by the current V3 tool. Do not imply that pause, archive, and cancellation are interchangeable.

If the user needs buyer-account prerequisites, hand off to the account-readiness skill. If the user needs a new draft campaign, proposal round, or first media-buy staging, hand off to the campaign-setup skill.
