>_

SpendSignoff documentation

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

AI client setup

Connect Cursor

Cursor reads MCP servers from a JSON config. Point it at the SpendSignoff server, authorize an ad account read-only, and approve drafts in the SpendSignoff app.

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

Cursor is supported today

Cursor loads MCP servers from ~/.cursor/mcp.json. Add the SpendSignoff entry, restart Cursor, and complete the OAuth 2.1 handshake when it prompts.

Cursor is built for engineers shipping ads alongside code. The operator drafts changes; you approve them in the SpendSignoff app, never from the editor.

Add the MCP server

Settings → Developer → Edit Config, paste the block, then restart Claude.

claude_desktop_config.json

{
  "mcpServers": {
    "spendsignoff": {
      "url": "https://mcp.spendsignoff.com/mcp"
    }
  }
}

Three steps to live

1

Connect the client

Add the SpendSignoff MCP server to your client and finish the OAuth 2.1 handshake. The client requests two scopes only — mcp.read and mcp.draft. There is no mcp.approve scope to grant.

2

Authorize an ad account, read-only

OAuth into Google Ads or Meta. The first authorization is read-only: SpendSignoff reads spend, structure, and performance so the operator can find money. Reads are ungated on every plan, including Free.

3

Review and ship your first approval

The operator drafts a change — say, moving budget off a stalled ad set — and shows the before → after diff. You run the two-step Approve and push live → Confirm control in the SpendSignoff app. Only then does it touch the live account, with a signed audit entry and one-click rollback.

The client only ever holds read and draft

Whatever your AI client can reach, it reaches with mcp.read and mcp.draft alone. It can read your accounts and draft changes. It cannot push a change live — approval happens in the SpendSignoff app, behind a two-step confirm, and is recorded in a KMS-signed append-only audit log.

What works today

  • Read campaigns, ad sets, budgets, bids, and performance across linked Google Ads and Meta accounts.
  • Ask the operator for a plain-English read: pacing, wasted spend, top movers, anomalies.
  • Draft budget reallocations, bid changes, and pacing fixes as reviewable diffs via propose_change.
  • Approve or reject drafts in the SpendSignoff app — never inside the AI client.

Next

Concepts

Drafts, the approval queue, the autonomy loop, the 24h envelope, and rollback.

    Connect Cursor — SpendSignoff Docs