Created: May 28, 2026
Importance: High
Status: Pending build (scoped, not started)
Owner direction: Sam asked for this as a handoff (May 28).
The direct Google Ads REST API lane is DEAD. Both OAuth clients (canonical 76590338058-... / project-claude-489923, and the deprecated lunar-arc 961786446236-...) return deleted_client because Sam deleted the Google Cloud projects on 2026-04-26 after a security incident. Verified again 2026-05-28 by direct token-endpoint call: still deleted_client.
Consequence: anything the NotFair connector does not expose cannot be changed. The concrete blocker that surfaced this session is the phone-call conversion duration (needs 180 to 480 seconds; NotFair's updateConversionAction does not expose phone_call_duration_seconds). There will be more fields like this. Restoring a real Google Ads API credential is the durable fix.
NotFair handles: campaign/budget/bidding reads, conversion action click-through window, negative keywords, ad final URLs, ad asset (headline/description) edits, sitelinks, experiments, runScript GAQL reads. The OAuth rebuild is for the gaps: phone_call_duration_seconds, value_settings nuances, audience writes, billing reads, account-access/user-management reads, and anything Tooling-like.
Mirror the proven Salesforce MCP pattern (mcp.aguiarinjurylawyers.com): a Cloudflare Worker holding the Google Ads OAuth refresh token server-side, exposing an authenticated HTTPS endpoint any agent can call with a bearer token. HTTPS/443 is never egress-blocked (SSH is, in Cowork), so this works from every environment.
Sequence: