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.
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
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.
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.
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
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.