MCP

Search Ads 360 MCP server: cross-engine reporting from Claude or Codex

TL;DR

Search Ads 360 is the platform where knowing the API's limits saves the most time. The Reporting API is reporting only — no integration built on it can change a campaign, ours included — and the single write the scope carries is offline conversion upload. This page covers the setup and the two errors that will otherwise cost you an afternoon.

What already exists for this platform

Google has not shipped a platform-official Search Ads 360 MCP server at the time of writing (September 2026), and community coverage is essentially absent — SA360 is a enterprise-seat product with a smaller developer audience than Google Ads.

  • No official server, and the newer Reporting API (searchads360.googleapis.com/v0) is recent enough that most wrappers predate it.
  • The scope is doubleclicksearch, classified sensitive, which raises the verification bar for anyone shipping their own.
  • Two APIs, not one — the new Reporting API for reads, and the legacy Search Ads 360 API for the conversion upload. A wrapper built on one of them is missing half.

What a full MCP server adds

Typical option todayAgent Planners MCP
SA360 toolsNone available10 reads, 3 writes
Reporting API (v0) readsRaresearch, report, search_fields, custom columns
Offline conversion uploadSeparate legacy APIIncluded, under the key's write mode
Anomaly detection + alertsNoYes
Google Ads in the same sessionNoYes — the engine account underneath
Manager-account accesslogin-customer-id by handHandled
Available to every organization since 18 September 2026, once Google finished verifying the doubleclicksearch scope.

How to configure it

  1. 1Create a key in API & MCP. tools:read for reporting; add tools:write for conversion upload. Tools mode needs a paid plan and fails closed.
  2. 2Connect Search Ads 360 under Integrations — available to preview organizations while the scope is in verification.
  3. 3Add the server to Claude Code, Claude Desktop or Codex using the snippet below.
  4. 4Call describe_permissions first, then list_accessible_customers for the client ids under your manager account.
bash
claude mcp add --transport http agentplanners https://www.agentplanners.com/api/mcp \
  --header "Authorization: Bearer ap_live_…"
Codex uses the same endpoint from ~/.codex/config.toml, with the key in an environment variable rather than the file: [mcp_servers.agentplanners] / url = "…/api/mcp" / bearer_token_env_var = "AGENTPLANNERS_API_KEY".

Two errors that will cost you an afternoon

  • The field-discovery query has no FROM clause. searchAds360Fields uses a query language that looks like GAQL and is not. Including a FROM returns a 400, and because the rejection happens before any repair path, the hint that would explain it never reaches you.
  • A conversion row keyed by customerId also needs campaignId and adGroupId, and the segmentation type must be Floodlight. If your engine account is Google Ads and the conversions are click-based, they are not Floodlight conversions and belong in Google Ads' own click-conversion upload instead — the same job through a different API.
A manager account reading a client's data needs the login-customer-id header, which is the same shape as Google Ads MCC access and the same thing people forget.

Use cases

  • Cross-engine reporting in one question, with the Google Ads engine account connected on the same key so the campaign detail is one step away.
  • Closed revenue back into bidding via offline conversion upload, which for lead generation usually matters more than any bid tuning.
  • Anomaly detection on SA360 metrics, delivered on a schedule rather than checked.
  • Reconciling SA360 against the engine account, which is where the numbers most often disagree.

Frequently asked questions

Is there an official Search Ads 360 MCP server?
Not from Google at the time of writing (September 2026), and community coverage is essentially absent. The newer Reporting API is also recent enough that most existing wrappers predate it.
Can an MCP server change SA360 campaigns?
No, and that is an API limit rather than a tooling one. The Search Ads 360 Reporting API is reporting only — campaigns, bids and budgets are managed on the engine account or in the SA360 interface.
What can be written to SA360?
Offline conversions only — upload, update, and update availability — through the legacy Search Ads 360 API rather than the Reporting API.
Why does my searchAds360Fields query return 400?
Most likely a FROM clause. That query language resembles GAQL but does not accept FROM, and the rejection arrives before any repair hint can explain it.
Put a human-approved agent on your ad ops

Start free — 2,500 credits a month, no credit card. Reads are free; every write waits for you.

Related reading