>_

SpendSignoff documentation

The always-on operator for your ad accounts. Read and draft from your AI client — approve before anything goes live.

Operating model

Agent skills

The always-on operator does not improvise. It runs a fixed, small set of skills against your linked Google Ads and Meta accounts. Each skill reads the account, finds a specific kind of waste or risk, and writes a draft. Every skill is propose-only — it produces a reviewable change, never a live one.

Your AI can read and draft — it can never spend without your approval.

What a skill is

A scoped detector that drafts one kind of change.

A skill is the operator's unit of work. It owns one question — where is budget stranded, which bids are off, is a campaign pacing wrong — and one answer shape: a draft with a before → after diff and a projected dollar impact. Skills do not chain into auto-pilot. The output of a skill is always a draft in the approval queue, emitted through propose_change, waiting on your two-step approve control.

  • Skills run on the autonomy loop's schedule, against read-only account data — they need no scope beyond mcp.read and mcp.draft.
  • A skill that finds nothing worth changing emits nothing. No filler drafts, no busywork in your queue.
  • Every draft a skill writes is bounded by the 24h envelope — the daily ceiling on net spend change still applies at approval time, even to a perfect draft.
1

Budget reallocation — propose-only

Finds spend stranded on under-performing campaigns and ad sets, then drafts a shift toward the ones converting. It reads pacing and ROAS across the linked account and writes a budget diff — say, moving $40/day off a stalled set onto one returning 3.1x. It moves nothing; it drafts the move for you to approve.

2

Bid tuning — propose-only

Compares current bids and target CPA against measured cost-per-conversion, and drafts bid changes where the gap is costing money — lowering bids that overpay, raising bids that are starving a converting keyword or audience. Each change lands as a per-entity diff, not a blanket sweep, so you approve exactly what moves.

3

Pacing fix (24h envelope) — propose-only

Catches campaigns spending too fast or too slow against their budget window and drafts a correction to bring daily spend back on track. The drafted correction is sized to fit inside the 24h envelope — the operator will not draft a pacing jump that the daily ceiling would block at approval. You see the projected end-of-day spend before you confirm.

4

Anomaly triage & alerts — propose-only

Watches for the breaks: a spend spike, a CTR collapse, a disapproved ad, a budget about to exhaust. When it trips, it raises an alert and — where there is a safe corrective move, such as pausing a runaway ad set — drafts that move alongside the alert. The alert is informational; the fix is still a draft you approve. It never pauses or edits the account to "stop the bleeding" on its own.

5

Creative rotation — propose-only

Reads creative-level performance and drafts a rotation: pausing fatigued creatives whose CTR has decayed and shifting delivery toward the variants still earning clicks. It proposes which creatives go quiet and which get more room — as a reviewable diff. Nothing is paused or promoted until you approve.

Every skill drafts — none applies

There is no skill, mode, or setting that lets the operator apply a change on its own. A skill's entire job ends at the draft. The change reaches your live account only when you run the two-step Approve & push live → Confirm control, and only within the 24h envelope. There is no mcp.approve scope to grant away.

Next

Autonomy loops

How the loop schedules these skills, what it reads each cycle, and how drafts reach your queue.

    Agent skills — SpendSignoff Docs