Remote MCP instance · Google Ads
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.
01 — Endpoint
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
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-onlyBuilds and runs a GAQL query (SearchStream) against a customer: pick a resource, fields, optional conditions, orderings and a row limit.
customers_list_accessible_customersread-onlyLists 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-onlyDescribes a GAQL resource: which fields are selectable, filterable and sortable. Useful before composing a search.
labels_manage_labelswriteCreates, 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_associationswriteAttaches 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_assetwriteCreates 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_assetwriteUploads 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.
03 — Access control
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
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
Access is invite-only. Tell us who you are and an admin will review your request.
Already a member? Sign in to the console