Remote MCP instance · Google Ads

BIFROST

A hosted, invite-only instance of the official Google Ads MCP server. Your agents get one endpoint; every user signs in with their own Google account and sees only the Ads accounts they already have access to.

official google-ads-mcpstreamable-httpper-user Google OAuthpropose-and-confirm writes

01 — Endpoint

Point your client at one URL.

No local process, no credential files. Add the endpoint to Claude, Cursor or any MCP client that speaks OAuth — the browser opens, you sign in with Google, and the server uses your token for every Ads API call it makes on your behalf.

// mcp.json

{
  "mcpServers": {
    "bifrost": {
      "url": "https://bifrost.5pm.ai/mcp"
    }
  }
}

OAuth 2.1 · PKCE · dynamic client registration — no manual tokens to copy.

02 — Surface

Seven tools. Confirmed mutations.

Reporting, account discovery and schema metadata stay read-only. Label and asset writes are two-step by construction: every mutation is validated first and only commits with the checksum from that validation — no single-shot changes.

search_searchread-only

Builds and runs a GAQL query (SearchStream) against a customer: pick a resource, fields, optional conditions, orderings and a row limit.

customers_list_accessible_customersread-only

Lists the Google Ads customer IDs your signed-in Google account can access. Access follows Google Ads user roles — direct or via a linked manager account.

metadata_get_resource_metadataread-only

Describes a GAQL resource: which fields are selectable, filterable and sortable. Useful before composing a search.

labels_manage_labelswrite

Creates, updates or removes Label resources. Every mutation is two-step: validate_only=true returns the proposed change_items and a checksum; committing requires validate_only=false with that checksum.

labels_manage_label_associationswrite

Attaches or detaches labels on campaigns, customers, ad groups or ad-group criteria (CREATE / REMOVE). Same propose-and-confirm workflow: validate first, commit with the returned checksum.

assets_create_assetwrite

Creates a Google Ads asset: TEXT, IMAGE (base64 data on this hosted instance), YOUTUBE_VIDEO, SITELINK, CALLOUT or STRUCTURED_SNIPPET. Required fields depend on asset_type; mutations use the same validate-then-commit checksum workflow.

assets_upload_video_assetwrite

Uploads a video to YouTube via the Ads API (runs as a background task). Upstream requires an absolute local file path, documented as local-stdio-only — of limited use on this hosted instance; prefer assets_create_asset with an existing youtube_video_id.

resource · discovery-documentresource · metricsresource · segmentsresource · release-notes

03 — Access control

Two gates on every call.

1 · The allowlist

Bifrost is invite-only. An admin approves every member by name and phone number; the console is gated by a one-time SMS code and an httpOnly session cookie. No allowlist entry, no tool calls — even with a valid Google login.

2 · Your Google account

Every MCP session authenticates with the caller's own Google identity over OAuth 2.1. The server queries the Ads API with your token — you can only ever read accounts Google Ads already lets you read.

04 — Telemetry

Every tool call leaves a trace.

Full call record

Tool, arguments, result preview, duration and outcome retained per invocation.

Caller identity

Google identity, MCP client name and version, session and request IDs on every row.

Denials recorded

Calls from accounts outside the allowlist are blocked and logged.

05 — Access

Cross the bridge.

Access is invite-only. Tell us who you are and an admin will review your request.

International format. Sign-in is a one-time code to this number.

Already a member? Sign in to the console