Start here
Get started
SpendSignoff adds an always-on operator to the AI client you already use. It connects over OAuth, starts read-only, and stages every spend-affecting change as a draft you approve. You are live in three steps.
Connect your AI client
Add the SpendSignoff MCP server to Claude, ChatGPT, or Cursor. It connects over OAuth 2.1 and requests two scopes only: mcp.read and mcp.draft. There is no mcp.approve scope — approval never leaves the SpendSignoff app.
Settings → Developer → Edit Config, paste the block, then restart Claude.
claude_desktop_config.json
{
"mcpServers": {
"spendsignoff": {
"url": "https://mcp.spendsignoff.com/mcp"
}
}
}Link an ad account — read now
OAuth into Google Ads or Meta. The first authorization is read-only: SpendSignoff reads spend, structure, and performance so the operator can find money. Nothing is changed yet.
- Reads are ungated — you can see what the operator would do on any plan, including Free.
- Linking grants read access to your ad account. It does not grant the ability to spend — that is gated behind your explicit approval, not an OAuth scope.
Ship your first approval
The operator drafts a change — say, reallocating a stalled budget — and shows the before → after diff with projected impact. You review it in the approval queue and run the two-step Approve & push live → Confirm control. Only then does it touch the live account, with a full audit entry and one-click rollback.
Drafts are inert until you approve
What the operator can do today
V1 is propose-only. The loop drafts; you approve.
- Read campaigns, ad sets, budgets, bids, and performance across linked Google Ads and Meta accounts.
- Draft budget reallocations, bid changes, and pacing fixes as reviewable diffs via
propose_change. - Never apply a change on its own. There is no auto-pilot in V1 — every live change is one you approved.
Next
Concepts
Drafts, the approval queue, the autonomy loop, the 24h envelope, and rollback.