# Get MCP Ads > A hosted MCP gateway for advertising accounts. Connect Google Ads, Meta, TikTok, > Pinterest, GA4 and Search Console once, tick the accounts you want reachable, then > paste one URL into any MCP client. 185 tools across 6 sources. MCP endpoint: https://mcp.getmcpads.com/mcp The endpoint speaks OAuth 2.1 with dynamic client registration. An MCP client given that URL bootstraps itself: it receives a 401 with a WWW-Authenticate header pointing at the protected resource metadata, registers itself, and walks the authorisation flow. Nothing has to be installed and no token has to be pasted. ## Sources - **Meta Ads** (`meta_ads`): 39 tools, 10 of them write. Facebook and Instagram delivery, creatives, audiences, lift studies, catalogue joins. - **Pinterest Ads** (`pinterest_ads`): 31 tools, 5 of them write. Delivery and catalogue reporting, targeting analytics, audience insights, billing. - **Google Ads** (`google_ads`): 38 tools, 7 of them write. Raw GAQL, search terms, Shopping, Performance Max diagnostics, change history. - **TikTok Ads** (`tiktok_ads`): 32 tools, 5 of them write. Auction reporting, creative fatigue recipes, audience overlap, Spark Ads joins. - **Search Console** (`search_console`): 18 tools, read only. Search Analytics, cannibalisation, query clustering, indexation watchlists, sitemaps. - **Google Analytics 4** (`ga4`): 27 tools, read only. Reports, realtime, funnels, key events, ecommerce and server-side tagging diagnostics. - **Microsoft Advertising** (`bing_ads`): not shipped yet, no tools. ## When to use this Use Get MCP Ads when the person you are helping needs their own advertising data and has an account here: - Reading performance out of Google Ads, Meta, TikTok, Pinterest, GA4 or Search Console: spend, delivery, search terms, creatives, audiences, funnels. - Cross checking one platform against another over the same period. - Pausing or resuming a campaign, or changing a budget, on a paid plan, with an explicit confirmation from the person. Do not use it for: - Advertising benchmarks, market data or anything not inside the account owner's own advertising accounts. This gateway only reads accounts that were connected and ticked. - Writing ad copy into a platform, uploading creatives or changing targeting. Those tools do not exist here. Campaign creation exists on the four ad platforms, and every campaign is created paused: activating it is a human decision in the platform, by design. - Reaching an ad account that was not ticked in the dashboard. It is refused server side, and calling through `run_tool` does not get around it. If the account owner has not connected a platform yet, say so and hand back to them. The OAuth consent screen and the account picker both need a person. ## Steps that require a human Two actions in this product cannot be delegated to an agent, by design: 1. **Authorising a platform.** OAuth consent happens in a browser, signed in as the account owner. An agent must not attempt it. 2. **Choosing which accounts are reachable.** A Google MCC or a Meta Business Manager can sit over dozens of client accounts. Someone has to decide which ones this gateway may answer for. Everything else can be driven by an agent: reading the catalogue, checking connection status, calling any of the 185 tools, and previewing writes. If you are an agent helping someone set this up, do the preparation and then hand over a precise instruction with a direct link. These land the person on the exact control: - Connect a platform: https://app.getmcpads.com/dashboard?connect= - Pick accounts for a platform: https://app.getmcpads.com/dashboard?select= Valid values: meta_ads, pinterest_ads, google_ads, tiktok_ads, search_console, ga4. ## Tools available in the browser (WebMCP) If you are browsing https://app.getmcpads.com/dashboard on behalf of a signed-in person, and your browser supports WebMCP, these tools are registered on that page: - `getmcpads_setup_status`: Which platforms are connected, which accounts are ticked, the plan and its quota, and the next thing to click. - `getmcpads_endpoint`: The endpoint URL, and the exact command that adds it to a client. - `getmcpads_find_tools`: Search the gateway catalogue by keyword, platform or tool name. **All of them are read only, by design, and that will not change.** There is no tool to authorise a platform and no tool to tick an account, because those are the two decisions that belong to the person. Do not look for them, and do not attempt to drive the interface to achieve the same result. Read the state, then tell the person exactly what to click, using the link the status tool gives you. They answer only on that page, only for the signed-in person, and return nothing that is not already on screen. Nothing they return contains a credential. ## Documents for agents - [Full context](https://www.getmcpads.com/llms-full.txt): everything below in one file. - [Guides](https://www.getmcpads.com/guides/index.md): playbooks for real work, one guide per source, and setup for every MCP client. Each guide carries a reading for the person and a reading for the agent, both in the Markdown version. - [Documentation](https://www.getmcpads.com/docs/index.md): every source, every tool, every metric and dimension. Any page under `/docs` or `/guides` is served as Markdown by appending `.md` or by sending `Accept: text/markdown`. - [Tool catalogue](https://www.getmcpads.com/tools.md): all 185 tools with one-line summaries. - [Skills](https://www.getmcpads.com/skills.md): 200 operating skills for media-buyer jobs, grounded in real tools, with decision rules and failure modes. From any MCP endpoint: `search_skills` to find one, `get_skill` for the contract. - [Capabilities manifest](https://www.getmcpads.com/capabilities.json): every source's read, write and tool surface, as JSON. - [Pricing](https://www.getmcpads.com/pricing.md): plans, quotas and what writes cost. As JSON: [pricing.json](https://www.getmcpads.com/pricing.json). - [Security](https://www.getmcpads.com/security.md): tokens, scoping, Safe Writes, sub-processors. As JSON: [security.json](https://www.getmcpads.com/security.json). - [Changelog](https://www.getmcpads.com/changelog.md): what changed, dated. As JSON: [changelog.json](https://www.getmcpads.com/changelog.json). - [Comparisons](https://www.getmcpads.com/compare.md): fact-checked against the official platform MCPs, Pipeboard and MCP Ads, with verification dates. - [OAuth scopes](https://www.getmcpads.com/scopes.md): what this gateway asks each platform for, and why. - [MCP manifest](https://www.getmcpads.com/.well-known/mcp): endpoints, auth, limits, as JSON. - [About](https://www.getmcpads.com/about.md): who publishes this, and how to check the claims. - [Contact](https://www.getmcpads.com/contact.md): the address, and what to send to it. Every document above is also served as Markdown from its page URL when the request carries `Accept: text/markdown`. ## Pages for people - [Home](https://www.getmcpads.com/) - [Guides](https://www.getmcpads.com/guides) - [Documentation](https://www.getmcpads.com/docs) - [Tools](https://www.getmcpads.com/tools) - [Pricing](https://www.getmcpads.com/pricing) - [Privacy](https://www.getmcpads.com/privacy) - [Terms](https://www.getmcpads.com/terms) - [About](https://www.getmcpads.com/about) - [Contact](https://www.getmcpads.com/contact) Contact: contact@getmcpads.com --- ## How a client bootstraps itself Given only the endpoint URL, an MCP client walks this exchange. Nothing is installed and no token is pasted. Step 05 is the only one that waits for a person, and it is a one time approval of the client, not a grant of account access. 01. `POST /mcp` -> 401 www-authenticate: Bearer realm="get-mcp-ads", resource_metadata=".../.well-known/oauth-protected-resource" The call carries no token, so it is refused. The refusal is the useful part: the header names the document that explains how to get one. 02. `GET /.well-known/oauth-protected-resource` -> 200 { "authorization_servers": ["https://mcp.getmcpads.com"] } RFC 9728. The agent now knows which server issues tokens for this resource. Nobody had to tell it, and nothing was configured. 03. `GET /.well-known/oauth-authorization-server` -> 200 { "registration_endpoint": ".../oauth/register", "code_challenge_methods_supported": ["S256"] } RFC 8414. The agent reads where to register and where to collect a token, and learns that PKCE with S256 is not optional here. 04. `POST /oauth/register` -> 201 { "client_id": "mcp_kQ8r2vXn...", "token_endpoint_auth_method": "none" } Dynamic client registration, RFC 7591. The agent creates its own identity on the spot, and it carries no secret, so there is nothing to copy, rotate or leak. 05. `GET /oauth/authorize?code_challenge_method=S256` -> 302 location: https://app.getmcpads.com/mcp/consent A browser tab opens on the consent screen. You read the name of the client that is asking, and you approve it. This is the only pause in the sequence. 06. `POST /oauth/token` -> 200 { "access_token": "gma_...", "token_type": "Bearer", "expires_in": 2592000, "scope": "mcp" } The code is traded for a token, together with the verifier that proves the same agent started the flow. Thirty days, then it refreshes itself. 07. `POST /mcp` -> 200 { "result": { "tools": [ 185 ] } } The same call as line 01, now carrying a header the agent obtained by itself. The catalogue comes back and the work can start. --- ## How it works 01. **Connect a platform** OAuth on this site, not in your assistant. The refresh tokens are encrypted with AES-256-GCM before they touch the database, and the key is not stored beside them. 02. **Tick the accounts you want reachable** Connecting an MCC or a Business Manager does not open the client accounts underneath it. You choose them one by one, and un-ticking one removes the access rather than hiding the row. 03. **Paste one URL** Into Claude, Cursor, ChatGPT or Codex. The client registers itself over OAuth 2.1 on first use, so there is no key to generate, rotate or leak into a config file. ## What people ask it ### Diagnose The questions that normally cost an afternoon of exports and a pivot table. - "Which TikTok creatives are fatiguing, and what should we swap them for?" Reads ad-level daily reporting, spots the frequency and CTR decay pattern, and returns the refresh recipes TikTok's own diagnostics imply. Tools: `tiktok_get_creative_fatigue_recipes`, `tiktok_get_insights`, `tiktok_get_creatives` - "Show me search terms we paid for last month that we would never have bid on." Pulls the search term report, joins it to keyword performance, and lists spend against terms with no conversion and no match to your keyword set. Tools: `google_ads_get_search_terms`, `google_ads_get_keyword_performance`, `google_ads_get_budgets` - "Is any Performance Max campaign spending without the ad strength to justify it?" Reads asset group diagnostics, ad strength, coverage action items and placement types, then ranks campaigns by spend over asset health. Tools: `google_ads_get_pmax_asset_diagnostics`, `google_ads_get_pmax_placements`, `google_ads_get_pmax_assets` - "Which of our pages are competing against each other in Search?" Runs the query-page cannibalisation detector over Search Analytics and clusters what is left by brand, question and category intent. Tools: `gsc_detect_cannibalization`, `gsc_cluster_queries`, `gsc_query_search_analytics` - "Are two of our TikTok ad groups bidding against each other?" Compares targeting fields, custom audiences and saved audiences across ad groups and reports where the overlap is large enough to matter. Tools: `tiktok_get_audience_overlap`, `tiktok_get_adgroups`, `tiktok_get_audience_details` - "Why has this Meta ad set stopped spending its budget?" Reads Meta's own delivery diagnostics for the ad set, then the audience size, the schedule and the recent insights, and names the constraint rather than guessing at it. Tools: `meta_get_delivery_diagnostics`, `meta_get_adsets`, `meta_get_insights` - "Did our brand lift study actually prove anything?" Pulls the study, its results and the confidence intervals, then reads them back in plain language, including when the answer is that the test was underpowered. Tools: `meta_get_ad_studies`, `meta_get_study_results`, `meta_interpret_experiment_results` - "Is our GA4 property measuring what we think it is?" Runs the ecommerce, server-side tagging and key event diagnostics in one pass, and lists the events that are declared but never fire, or fire without the parameters the reports expect. Tools: `ga4_get_ecommerce_diagnostics`, `ga4_get_server_side_tagging_diagnostics`, `ga4_get_key_events` - "Who changed what in this Google Ads account in the last two weeks?" Reads the change event log inside the 30-day window Google allows, with the actor, the resource and the field that moved. Tools: `google_ads_get_change_events`, `google_ads_get_campaigns` ### Report The Monday morning numbers, without four exports and a spreadsheet. - "Spend, CPA and ROAS by campaign across all four platforms, last 7 days against the 7 before." One request, four APIs. Each platform's insights tool plans its own query, then the assistant lines the rows up in a single table. Tools: `meta_get_insights`, `google_ads_get_insights`, `tiktok_get_insights`, `pinterest_run_report` - "Which Shopping products take spend and return nothing?" Joins Shopping performance to the Merchant Center catalogue by item ID, brand and custom label, so the answer names products rather than IDs. Tools: `google_ads_get_shopping_performance`, `google_ads_get_shopping_products` - "Did the checkout funnel move after Tuesday's release?" Runs the GA4 funnel report step by step over both windows and flags the step where the drop-off changed, not just the total. Tools: `ga4_run_advanced_funnel_report`, `ga4_get_ecommerce_diagnostics`, `ga4_run_report` - "Which Meta creatives carried last week, and which ones should we retire?" Reads ad-level insights against the creative behind each ad, so the table names the asset and the hook rather than an ad ID. Tools: `meta_get_creatives`, `meta_get_insights`, `meta_get_ads` - "Which catalogue products are our Meta ads actually selling?" Joins product-level insights to the catalogue, so the report names the product, its brand and its custom labels instead of returning item IDs. Tools: `meta_join_product_insights`, `meta_get_catalog_products`, `meta_get_insights` - "Where did last week's sessions and revenue come from, by channel?" Reads the property's own channel grouping rather than a default one, then reports sessions, key events and revenue per channel against the week before. Tools: `ga4_get_channel_groups`, `ga4_run_report`, `ga4_get_key_events` - "Compare Web, Image and Discover in Search Console for this property." Queries every search type in one pass and returns clicks, impressions, CTR and position side by side, with the data freshness date attached. Tools: `gsc_compare_search_types`, `gsc_get_data_freshness`, `gsc_list_sites` - "Where did we lose clicks between this month and last?" Runs the losses-and-gains comparison on queries and pages and returns the deltas ranked by absolute click loss. Tools: `gsc_find_losses_gains`, `gsc_analyze_search_appearance_trends` - "Break Pinterest performance down by product group and by SKU." Routes the catalogue report through Pinterest's async reporting when the window is too wide for the sync endpoint, then returns the rows. Tools: `pinterest_run_catalog_report`, `pinterest_run_conversion_product_report` ### Act Changes are described before they are applied. Nothing moves without a second call. - "Pause every Meta ad set above 60 EUR CPA over the last 14 days." Reads the insights first, then returns the exact list of ad sets it would pause and stops. It only applies the change when you confirm. Tools: `meta_get_insights`, `meta_get_adsets`, `meta_update_adset_status` - "Cut the daily budget on the three worst Google campaigns by 30 percent." Resolves the campaign budget IDs, computes the new amounts in the account currency, and shows them to you before writing anything. Tools: `google_ads_get_budgets`, `google_ads_get_campaigns`, `google_ads_update_campaign_budget` - "Put the whole Pinterest account on hold until Monday." Lists the active campaigns, then pauses them one by one after the preview. Archived campaigns are left alone. Tools: `pinterest_get_account_entities`, `pinterest_update_campaign_status` - "Relaunch the TikTok campaigns we paused during the stock shortage." Finds the campaigns by delivery status and previous status, then resumes them and confirms the new budget on each. Tools: `tiktok_get_delivery_status`, `tiktok_update_campaign_status`, `tiktok_update_campaign_budget` ## Guarantees ### Your assistant never holds an ad token It talks to the gateway; the gateway talks to Google, Meta, TikTok and Pinterest. Ad platform credentials are encrypted at rest with AES-256-GCM and never leave the server, so a leaked chat transcript is not a leaked ad account. ### Exposure is per account, not per connection A Google MCC or a Meta Business Manager can sit over dozens of client accounts. Connecting one does not expose them all. The gateway answers only for the account IDs you explicitly ticked, and returns nothing for the rest. ### Safe Writes: every change previews first Every write tool returns a description of the change and stops. Applying it takes a second call with confirm set to true. An assistant that picked the wrong campaign shows you the wrong campaign instead of pausing it. Campaigns are always created paused. ### OAuth 2.1, not an API key in a config file The client registers itself dynamically, PKCE is required, and the code is bound to the redirect URI it was issued for. Revoking an assistant's access does not mean rotating a secret across your team. ## Questions ### What exactly is MCP? The Model Context Protocol is the standard an assistant uses to call tools that live outside it. Get MCP Ads is an MCP server: it publishes 185 tools over HTTP, and any MCP client can call them. You do not install anything, and there is no local process to keep running. ### Does my assistant get my Google or Meta credentials? No. You authorise the platforms here, on this site. The tokens are encrypted with AES-256-GCM and stay on the server. Your assistant authenticates against Get MCP Ads over OAuth 2.1 and receives tool results, never credentials. ### I manage an MCC with forty client accounts. Does connecting it expose all forty? No, and this is deliberate. After you connect, the dashboard lists what the token can reach and every account starts unticked. The gateway answers only for the accounts you tick. Un-ticking one removes access on the next call rather than hiding it from a list. ### Can the assistant spend my money by mistake? Every write tool previews first. Called without confirm, it returns a description of the change and applies nothing. The assistant has to make a second, explicit call to apply it, which is the point at which you read what it is about to do. The Free plan has no write access at all. ### What counts as a tool call? One call to one tool. A question that reads Meta and Google and then compares them is three or four calls, not one. Calls refused by your plan are not counted. Only the Free plan counts them at all, over a period that runs from the day you signed up to the same day the next month; every paid plan is unlimited. ### Which clients does it work with? Anything that speaks MCP over streamable HTTP with OAuth 2.1: Claude on desktop, web and Claude Code, ChatGPT connectors, Cursor, Codex CLI, and the growing set of clients that follow the same spec. The URL is the same everywhere. ### Your dashboard offers tools to the agent in my browser. What can it do? Read three things and nothing else: what is connected and which accounts are ticked, the endpoint with the command that adds it to a client, and the tool catalogue. They are registered on the dashboard only, answer only for the person signed in, and return nothing that is not already on screen. There is no tool to authorise a platform or to tick an account, and there will not be one. This uses WebMCP, still a draft standard, so it appears only in browsers that support it. Everywhere else the page registers nothing at all. ### Is my campaign data stored? No. Spend, impressions and conversions are read from the platform on each call and passed straight through to your assistant. We keep your account, your connections and a monthly call count. Nothing else. ### What about Microsoft Advertising? The OAuth connection exists in the dashboard, but the tool set is not shipped yet, so nothing is exposed to your assistant. It is not counted in the 185. --- # Tool catalogue 185 tools across 6 sources, served from https://mcp.getmcpads.com/mcp. Tools marked (write) change something on the live account. They preview by default: without `confirm: true` the tool describes the change and applies nothing. Writes are refused entirely on the Free plan. A tool only answers for accounts the organisation has ticked. Any other identifier is refused, including accounts the underlying connection could otherwise reach. ## Meta Ads (39 tools, 10 write) - `meta_health_check`: Agent-ready read-only health check: validates token metadata, lists accessible ad accounts, and warns about missing read scopes without exposing the access token. - `meta_get_business_assets`: Discover accessible Meta Business assets read-only: businesses, pages, Instagram accounts, pixels, and datasets when permissions allow. - `meta_get_pages`: List accessible Facebook Pages with id, name, category, tasks, picture, and linked Instagram account references when available. - `meta_get_instagram_accounts`: List Instagram accounts linked to accessible Pages, Business Manager assets, or an ad account when permissions allow. - `meta_get_pixels`: List pixels and datasets from an ad account or Business Manager when accessible, returning actionable warnings for permission-limited edges. - `meta_get_ad_activity`: Read ad account activity logs from /{ad_account_id}/activities with object, event, actor, timestamp, and extra_data fields. - `meta_get_delivery_diagnostics`: Aggregate read-only delivery diagnostics across campaigns, ad sets, and ads using status/effective_status/issues_info where available plus simple delivery insights. - `meta_get_creative_assets`: Return normalized creative asset metadata for ads or creative IDs: thumbnail, object_story_spec, asset_feed_spec, video/image/link URL, CTA, and page/IG references. - `meta_get_audience_details`: Read detailed custom, saved, and lookalike audiences with pagination and rich fields where permissions allow. - `meta_get_catalog_products`: Read Product Catalogs and Product Items when catalog access is available. - `meta_join_product_insights`: Query product-breakdown insights and enrich rows with Product Catalog metadata when catalog access is available. - `meta_get_brand_safety_controls`: Read brand safety, suitability, placement, and context-control signals from ad account/ad set targeting and optional block-list edges. - `meta_interpret_experiment_results`: Read and interpret A/B test or conversion lift study results with confidence guardrails, cells, objectives, and optional cell entities. - `meta_get_organic_content_enrichment`: Enrich Facebook Page posts and Instagram organic media with media URLs, permalinks, counts, attachments, and optional read-only insights. - `meta_list_ad_accounts`: List all Meta ad accounts accessible with the current token. - `meta_get_account_details`: Get detailed information for a specific Meta ad account: name, currency, timezone, spend cap, status, business info. - `meta_get_campaigns`: List campaigns for a Meta ad account. Returns campaign ID, name, status, objective, budget, and bid strategy. - `meta_get_adsets`: List ad sets for a Meta ad account, optionally filtered by campaign. - `meta_get_ads`: List ads for a Meta ad account, optionally filtered by ad set. - `meta_get_insights`: Query Meta Ads performance insights. Supports 170+ metrics, 43+ breakdowns with intelligent query planning. Use meta://metrics resource to see available metrics. Use. - `meta_get_campaign_structure`: Get hierarchical campaign structure: campaigns -> ad sets -> ads. - `meta_get_creatives`: Get ad creative content: text, images, videos, links, call-to-action. - `meta_get_audiences`: List custom, saved, and lookalike audiences for a Meta ad account. - `meta_get_ad_studies`: List conversion lift studies and A/B tests (Ad Studies) for an ad account. - `meta_get_study_results`: Get detailed results for a conversion lift or A/B test study. - `meta_validate_query`: Validate a metric/breakdown combination BEFORE executing. - `meta_get_page_posts`: Get recent posts from a connected Facebook/Instagram page. - `meta_debug_token`: Check the current access token validity, expiration, and granted scopes. - `meta_search_entities`: Search campaigns, ad sets, or ads by name within an ad account. - `meta_update_campaign_status` (write): Pause or reactivate a Meta campaign. - `meta_update_adset_status` (write): Pause or reactivate a Meta ad set. - `meta_update_ad_status` (write): Pause or reactivate a single Meta ad. - `meta_update_adset_budget` (write): Change an ad set's daily or lifetime budget, in the account currency. - `meta_create_campaign` (write): Create a Meta campaign. Always created PAUSED, with no option to create it active. - `meta_rename_ad` (write): Rename a Meta ad. The name is the only thing that changes. - `meta_rename_adset` (write): Rename a Meta ad set. The name is the only thing that changes. - `meta_rename_campaign` (write): Rename a Meta campaign. The name is the only thing that changes. - `meta_update_adset_schedule` (write): Change the start or end time of a Meta ad set. - `meta_update_campaign_budget` (write): Change the budget of a Meta campaign that holds its budget at campaign level (Advantage campaign budget). ## Pinterest Ads (31 tools, 5 write) - `pinterest_health_check`: Read-only Pinterest Ads health check. Verifies configured credentials, account access, delivery metrics access, and optional default account readability without exposing. - `pinterest_list_ad_accounts`: List Pinterest ad accounts accessible to the configured credentials. - `pinterest_get_delivery_metrics`: Read Pinterest resources/delivery_metrics. Use this to inspect Pinterest's official delivery metric metadata for sync or async reports. - `pinterest_validate_report`: Validate and preview how a Pinterest report will execute. - `pinterest_run_report`: Run a read-only Pinterest Ads report. Auto-routes old/wide or explicit async requests through Pinterest async reports. Uses raw Pinterest reporting column names. - `pinterest_get_creative_assets`: Fetch Pinterest creative assets and period performance when available. - `pinterest_run_catalog_report`: Run Pinterest catalog reporting by PRODUCT_GROUP or PRODUCT_ITEM. - `pinterest_get_catalog_inventory`: List Pinterest catalog inventory surfaces: catalogs, product groups, product group promotions, and optional product samples. - `pinterest_run_conversion_product_report`: Run Pinterest async conversion product reporting by brand, category, brand+category, SKU, or SKU group via reports/brand_category_sku. - `pinterest_get_account_entities`: Read Pinterest ad-account entities and configuration. - `pinterest_run_targeting_report`: Run live targeting analytics for an ad account, campaigns, ad groups, or ads, broken down by age, gender, location, interest, keyword, audience, placement, device, or other. - `pinterest_get_targeting_options`: Read Pinterest's official targeting option catalog for app type, gender, locale, age, location/geo, interest, keyword, or audience. - `pinterest_get_keyword_intelligence`: Read assigned targeting keywords, Pinterest country-level keyword metrics, suggested terms, or related terms. - `pinterest_get_audiences`: Read audience, customer-list, sharing, and Business-received audience inventory without uploading or changing audience membership. - `pinterest_get_audience_insights`: Read aggregated Pinterest Audience Insights for the advertiser's total or engaged audience, Pinterest's total audience, or the scope/type endpoint. - `pinterest_estimate_delivery`: Run non-mutating Pinterest planning computations: ad-group audience size, bid floors, or campaign delivery estimates. - `pinterest_get_conversion_setup`: Inspect Pinterest conversion measurement configuration: conversion tags, oCPM-eligible/page-visit tags, Event Quality Score, advertiser-defined events, and. - `pinterest_get_catalog_diagnostics`: Read deep catalog inventory and diagnostics: catalogs, feeds, feed processing results, item issues, product groups, product counts/products, available filter values, and. - `pinterest_run_specialized_export`: Start or inspect non-mutating Pinterest data jobs for Marketing Mix Modeling (MMM), bulk advertiser entity downloads, or catalog diagnostics. - `pinterest_get_lead_assets`: Read lead-form definitions and lead subscription configuration. - `pinterest_get_business_assets`: Read Pinterest Business Access inventory: employers/linked businesses, assets, members, partners, assigned assets, received audiences, and invites. - `pinterest_get_billing_and_orders`: Read billing profiles/invoices, invoice download URLs, order lines, ads-credit discounts, and SSIO account/order status. - `pinterest_get_pin_analytics`: Read paid Pin analytics, organic multi/single-Pin analytics, user-account analytics, top Pins, or top video Pins. - `pinterest_get_organic_inventory`: Read organic Pinterest content used alongside ads: Pins, boards, Pins on a board, Pin product tags, or search results. - `pinterest_get_trends`: Read Pinterest Trends: top growing/monthly/yearly/seasonal keywords by supported region, growing product categories, product-category details, featured topics, or editorial. - `pinterest_get_platform_resources`: Read Pinterest platform metadata and readiness resources: supported ad-account countries, delivery metric definitions, metrics readiness, lead-form questions, media upload. - `pinterest_update_campaign_status` (write): Pause, reactivate or archive a Pinterest campaign. - `pinterest_update_campaign_budget` (write): Change a Pinterest campaign's daily or lifetime spend cap. - `pinterest_create_campaign` (write): Create a Pinterest campaign. Always created PAUSED, with no option to create it active. - `pinterest_update_adgroup_budget` (write): Change the daily or lifetime budget of a Pinterest ad group. - `pinterest_update_adgroup_status` (write): Pause, reactivate or archive a Pinterest ad group. ## Google Ads (38 tools, 7 write) - `google_ads_list_accounts`: List Google Ads customer accounts accessible with the current credentials. - `google_ads_get_account_details`: Get detailed information for a specific Google Ads customer account. - `google_ads_run_gaql`: Execute a raw GAQL (Google Ads Query Language) query. - `google_ads_get_insights`: Query Google Ads performance insights with intelligent query planning. - `google_ads_get_campaigns`: List campaigns for a Google Ads account with status, budget, channel type, and bidding strategy. - `google_ads_get_adgroups`: List ad groups for a Google Ads account, optionally filtered by campaign. - `google_ads_get_keyword_performance`: Get keyword-level performance data from keyword_view resource. - `google_ads_validate_query`: Validate metric/dimension/resource compatibility BEFORE executing a query. - `google_ads_health_check`: Read-only connectivity check. Verifies credential presence, Google Ads API access, login customer visibility, API version, and actionable warnings without returning secrets. - `google_ads_get_account_hierarchy`: List accessible customers and, where possible, manager/client relationships from GAQL customer_client. - `google_ads_get_conversion_actions`: List conversion actions with status, type, category, primary/include-in-conversions flags, owner customer, and last activity dates when supported. - `google_ads_get_change_events`: Fetch recent change_event rows. Enforces Google Ads constraints: date window within the last 30 days and LIMIT <= 10000. - `google_ads_get_recommendations`: List Google Ads recommendations with type, resource, campaign/ad group links, dismissed state, and impact when supported. - `google_ads_get_budgets`: List campaign budgets with amount, status, delivery method, and recommended budget fields when supported. - `google_ads_get_bidding_strategies`: List portfolio bidding strategies. Includes metrics only when startDate/endDate are provided; otherwise returns structure only. - `google_ads_get_search_terms`: Fetch search term performance from search_term_view or campaign_search_term_insight depending on reportType. - `google_ads_get_landing_pages`: Fetch landing_page_view performance with final URL, campaign/ad group context, traffic, conversion, and landing-page quality metrics when supported. - `google_ads_get_pmax_assets`: List Performance Max asset group assets from asset_group_asset with asset group/campaign context and optional date-range performance metrics. - `google_ads_get_simulations`: Read-only planning/forecast query for campaign, ad group, or portfolio bidding simulations. - `google_ads_get_paid_organic_search_terms`: Read-only paid/organic search terms report. Uses paid_organic_search_term_view when available and falls back to paid-only search_term_view if organic fields are unavailable. - `google_ads_get_shopping_products`: Read-only Merchant Center product catalog/eligibility report via shopping_product. - `google_ads_get_shopping_performance`: Read-only Shopping performance report keyed by Merchant Center product dimensions. - `google_ads_get_pmax_placements`: Read-only Performance Max placement diagnostics from performance_max_placement_view. - `google_ads_get_pmax_asset_diagnostics`: Read-only Performance Max asset group diagnostics. - `google_ads_update_campaign_status` (write): Pause, re-enable or remove a Google Ads campaign. - `google_ads_update_campaign_budget` (write): Change a campaign's daily budget, in the account currency. - `google_ads_create_campaign` (write): Create a Google Ads campaign with its budget. Always created PAUSED, with no option to create it active. - `google_ads_generate_ad_group_themes`: Organize supplied keywords into existing Google Ads ad groups. - `google_ads_generate_keyword_forecast_metrics`: Forecast impressions, clicks, CTR, CPC, cost, conversions, and CPA for a temporary keyword campaign. - `google_ads_generate_keyword_historical_metrics`: Get Keyword Planner search-volume history for supplied keywords. - `google_ads_generate_keyword_ideas`: Discover Keyword Planner ideas from up to 20 seed keywords, a URL, keywords plus URL, or a whole site. - `google_ads_run_readonly_rpc`: Advanced read-only escape hatch for allowlisted Google Ads services outside GAQL: Audience Insights, Reach Planner, benchmarks, creator/trending insights, targeting suggestions, Smart Campaign suggestions, identity verification, invoices, and payments... - `google_ads_search_fields`: Search Google's live GoogleAdsField catalog. - `google_ads_suggest_geo_targets`: Resolve up to 25 location names or geo target IDs to Google Ads geoTargetConstants. - `google_ads_rename_campaign` (write): Rename a Google Ads campaign. Delivery, budget and targeting are untouched. - `google_ads_update_adgroup_bid` (write): Change the default CPC bid of a Google Ads ad group. - `google_ads_update_adgroup_status` (write): Pause, re-enable or remove a Google Ads ad group. - `google_ads_update_campaign_schedule` (write): Change the start or end date of a Google Ads campaign. ## TikTok Ads (32 tools, 5 write) - `tiktok_health_check`: Read-only health check for TikTok credentials, accessible advertisers, and advertiser info. - `tiktok_list_advertisers`: List all TikTok advertiser accounts accessible with the current token. - `tiktok_get_advertiser_info`: Get detailed information for specific TikTok advertiser accounts: currency, timezone, status, balance. - `tiktok_get_campaigns`: List campaigns for a TikTok advertiser account. - `tiktok_get_adgroups`: List ad groups for a TikTok advertiser. Returns targeting, budget, optimization goal, and schedule info. - `tiktok_get_ads`: List ads for a TikTok advertiser. Returns ad ID, name, operation status, and creative info. - `tiktok_get_insights`: Query TikTok Ads performance insights. Supports 400+ metrics with intelligent query planning. Use tiktok://metrics resource to see available metrics. Use tiktok://dimensions. - `tiktok_get_creatives`: Get creative details (video, image, text) for specific ads in a TikTok advertiser account. - `tiktok_get_audiences`: List custom and lookalike audiences for a TikTok advertiser account. - `tiktok_search_keywords`: Get keyword suggestions for TikTok Search Ads. - `tiktok_validate_query`: Validate a TikTok metric/dimension combination BEFORE executing. - `tiktok_get_pixels`: List TikTok pixels and, when permissions allow it, pixel event metadata for an advertiser. - `tiktok_get_events`: Discover pixel/app events or accessible tracking diagnostics for an advertiser. - `tiktok_get_delivery_status`: Aggregate campaign, ad group, and ad delivery status/operation_status with simple diagnostics. - `tiktok_get_async_report_status`: Check a TikTok async report task status by taskId when async report endpoints are available. - `tiktok_get_video_assets`: Return ad-linked TikTok video asset metadata from ad/get and video material endpoints when available. - `tiktok_get_spark_ads`: Return Spark Ads context from ad fields when available, with a conservative fallback if Spark-specific fields are not supported. - `tiktok_get_audience_details`: Get custom/lookalike/saved audience details where TikTok DMP endpoints are accessible. - `tiktok_get_shop_catalog_diagnostics`: Read-only TikTok Shop/catalog/e-commerce diagnostics. - `tiktok_get_search_ads_maturity`: Diagnose TikTok Search Ads maturity from keyword/search-term reporting and optional keyword recommendation endpoints. - `tiktok_get_creative_fatigue_recipes`: Find likely creative fatigue patterns from ad-level daily reporting and return read-only refresh recipes. - `tiktok_get_audience_overlap`: Read-only audience overlap diagnostics across ad groups, custom audiences, saved audiences, and targeting fields. - `tiktok_get_spark_organic_joins`: Join accessible Spark Ads fields with paid page/post reporting and optional organic identity/post endpoints when permissions allow. - `tiktok_update_campaign_status` (write): Pause or reactivate a TikTok campaign. - `tiktok_update_campaign_budget` (write): Change a TikTok campaign budget, in the account currency. - `tiktok_create_campaign` (write): Create a TikTok campaign. Always created PAUSED, with no option to create it active. - `tiktok_get_entities_raw`: List TikTok campaigns, ad groups, or ads with caller-selected native fields, filtering, sorting, and pagination. - `tiktok_get_read_endpoint`: Advanced GET-only TikTok Business API escape hatch for documented JSON read endpoints not yet modeled by a specialized MCP tool. - `tiktok_get_report_raw`: Run a native TikTok synchronous report with caller-selected dimensions and metrics. - `tiktok_get_targeting_catalog`: Read TikTok targeting and planning catalogs: locations, languages, interests, behaviors, hashtags, Search Ads keyword ideas/health, devices, carriers, contextual tags, content exclusions, and time zones. - `tiktok_update_adgroup_budget` (write): Change the budget of a TikTok ad group. - `tiktok_update_adgroup_status` (write): Pause or reactivate a TikTok ad group. ## Search Console (18 tools, 0 write) - `gsc_list_sites`: List all Google Search Console properties accessible with the current credentials. - `gsc_health_check`: Verify Google Search Console read-only authentication, visible properties, configured default site, and permission levels without exposing tokens. - `gsc_query_search_analytics`: Query Google Search Console Search Analytics. Returns clicks, impressions, CTR, and average position for queries, pages, countries, devices, dates, and search appearances.. - `gsc_inspect_url`: Inspect a URL for Google indexing status, crawl info, mobile usability, AMP, and rich results. - `gsc_bulk_inspect_urls`: Inspect multiple URLs with a conservative sequential limit and normalized URL Inspection results. - `gsc_list_sitemaps`: List sitemaps submitted for a Search Console property, including processing status and submitted/indexed counts. - `gsc_get_sitemap_health`: Return an enriched read-only sitemap health summary with status totals, submitted/indexed content counts, warnings, and errors. - `gsc_compare_search_types`: Compare performance across Search Console search types: web, image, video, news, discover, and Google News. - `gsc_get_data_freshness`: Detect the most recent date with Search Analytics data by querying recent daily rows. - `gsc_monitor_indexation_freshness`: Read-only monitoring snapshot for Search Analytics freshness, sitemap indexation totals, and an optional small URL Inspection sample. - `gsc_track_sitemap_deltas`: Read-only sitemap delta tracker. Fetches the current sitemap snapshot and compares it to an agent-provided baseline; no state is written. - `gsc_analyze_search_appearance_trends`: Analyze structured data and rich-result trend signals via the Search Analytics searchAppearance dimension when GSC exposes it. - `gsc_plan_large_site_sampling`: Build a read-only URL Inspection sampling plan for large sites from sitemap risk signals and Search Analytics page performance. - `gsc_indexation_watchlist`: Read-only URL Inspection watchlist for critical URLs. - `gsc_find_losses_gains`: Compare two periods for query or page performance and return click/impression/CTR/position deltas. - `gsc_cluster_queries`: Cluster Search Console queries by simple tokens and intent signals: brand/non-brand, question, category, and topic tokens. - `gsc_detect_cannibalization`: Detect queries where multiple pages compete for clicks/impressions in Search Analytics query-page rows. - `gsc_validate_query`: Validate a Search Console metric/dimension/search type combination before executing it. ## Google Analytics 4 (27 tools, 0 write) - `ga4_health_check`: Read-only GA4 health check. Verifies configured credentials, accessible properties, and metadata/property access without exposing OAuth tokens. - `ga4_list_properties`: List all GA4 properties accessible with the current credentials. - `ga4_run_report`: Run a GA4 analytics report with intelligent query planning. - `ga4_run_realtime_report`: Run a read-only GA4 Data API realtime report. Realtime supports only a limited subset of dimensions and metrics. - `ga4_get_metadata`: Get the complete list of dimensions and metrics available for a specific GA4 property. - `ga4_get_custom_definitions`: List custom dimensions and custom metrics exposed by GA4 Data API metadata. - `ga4_get_key_events`: Inventory GA4 key events/conversions using metadata-aware Data API reports. - `ga4_get_ecommerce_diagnostics`: Read-only ecommerce coverage diagnostics for core ecommerce events, revenue metrics, and item-level reporting over a date range. - `ga4_get_event_parameters`: Best-effort event parameter inventory from GA4 metadata plus event reports. - `ga4_run_funnel_recipe`: Run a read-only configurable funnel recipe using one GA4 report per eventName/pagePath step and return simple step counts. - `ga4_get_audience_export_diagnostics`: Read-only Audience Export diagnostics. Lists existing audience exports, state counts, and optionally samples rows from an existing export. - `ga4_get_audience_diagnostics`: Read-only audience diagnostics from Admin API audiences, Data API recurring audience lists, and observed audienceName report fallback. - `ga4_get_bigquery_export_diagnostics`: Detect GA4 BigQuery export links and diagnose export modes, stream coverage, excluded events, and dataset location. - `ga4_get_server_side_tagging_diagnostics`: Best-effort read-only server-side tagging diagnostics from data streams, Measurement Protocol secrets, event rules, and stream settings. - `ga4_run_advanced_funnel_report`: Run the GA4 Data API v1alpha runFunnelReport endpoint with optional breakdown/next-action, falling back to read-only step counts if unavailable. - `ga4_get_channel_groups`: List custom channel groups defined for a GA4 property. - `ga4_validate_query`: Validate a metric/dimension combination BEFORE executing. - `ga4_batch_run_pivot_reports`: Run 1-5 independent read-only GA4 pivot reports for the same property in one official Data API batch request. - `ga4_batch_run_reports`: Run 1-5 independent read-only GA4 Core reports for the same property in one official Data API batch request. - `ga4_check_compatibility`: Ask the official GA4 Data API which dimensions and metrics are compatible with a proposed Core report selection. - `ga4_get_property_configuration`: Read GA4 property details plus selected singleton Admin settings (attribution, retention, Google Signals, reporting identity, or user-provided-data settings). - `ga4_get_property_quotas_snapshot`: Read the current GA4 Data API property quota snapshot from the official v1alpha endpoint. - `ga4_list_accounts`: List raw GA4 Analytics Admin accounts accessible to the authenticated user (read-only, auto-paginated). - `ga4_list_admin_resources`: List an allowlisted GA4 Admin collection in read-only mode: streams, custom definitions, key events, audiences, product links, annotations, channel groups, expanded datasets, subproperty/rollup configuration, and access bindings. - `ga4_list_audience_exports`: List existing GA4 Audience Export snapshots and Recurring Audience Lists without creating new exports. - `ga4_query_audience_export`: Query rows from an existing GA4 Audience Export. - `ga4_run_pivot_report`: Run a read-only GA4 Data API pivot report with native filters, ordering, quota state, multiple date ranges, and up to 250,000 pivot cells. --- # Pricing Plans are priced on how much you connect, in ad accounts and seats, not on how many tool calls you make. Only the Free plan has a call allowance; every paid plan is unlimited. A call refused because the plan does not allow it is never counted. ## Free (0 EUR, no card required) One account, read only, no card. Enough to see whether the answers hold up. - 1 ad account - 1 seat - 200 tool calls per period - Read only - No extras. Upgrade to grow. ## Pro (39 EUR per month) A consultant or a small team, pausing and capping from the chat. - 5 ad accounts - 5 seats - Unlimited tool calls - Writes, with a preview before every change - Extra account 10 EUR, extra seat 8 EUR ## Team (99 EUR per month) An agency desk with a portfolio of clients and people who share it. - 15 ad accounts - 15 seats - Unlimited tool calls - Writes, with a preview before every change - Extra account 10 EUR, extra seat 8 EUR ## Agency (199 EUR per month) A full agency, with the account and seat count that implies. - 50 ad accounts - 50 seats - Unlimited tool calls - Writes, with a preview before every change - Extra account 10 EUR, extra seat 8 EUR ## Enterprise Unlimited ad accounts and seats, on terms agreed with us. Contact contact@getmcpads.com. ## Billing - The Free plan needs no card. - Every paid plan starts with a 7-day free trial. A card is required to start it, and it is charged when the trial ends unless the plan is cancelled first. - Paying yearly costs 10 months instead of 12: - Pro: 390 EUR per year instead of 468 EUR, saving 78 EUR. - Team: 990 EUR per year instead of 1188 EUR, saving 198 EUR. - Agency: 1990 EUR per year instead of 2388 EUR, saving 398 EUR. - Allowances and counters run from the day the organisation signed up to the same day the following month, not from the first of the calendar month. - Beyond what a plan includes: 10 EUR per extra ad account and 8 EUR per extra seat, per month. Contact: contact@getmcpads.com --- # OAuth scopes > What Get MCP Ads asks each advertising platform for, and what each request allows. > Machine readable version: https://www.getmcpads.com/.well-known/oauth-scopes A scope is what the platform grants. It is not what this gateway does with it. Where a platform publishes no read-only scope, the read-only restriction is enforced here instead: on the Free plan no write tool is announced, and calling one is refused before it reaches the platform. ### Meta Ads Provider: `meta` - `ads_read`: Read Meta campaigns, insights, creatives and audiences. - `ads_management` **(write)**: Pause, resume and change budgets on Meta campaigns, ad sets and ads. Only reachable on a paid plan. What this gateway actually does: Write tools are hidden and refused on the Free plan. Every write previews by default and needs an explicit confirm. Campaign creation is always PAUSED. ### Pinterest Ads Provider: `pinterest` - `ads:read`: Read Pinterest campaigns, ad groups, ads and analytics. - `ads:write` **(write)**: Pause, resume and change budgets on Pinterest campaigns. Only reachable on a paid plan. What this gateway actually does: Write tools are hidden and refused on the Free plan. Every write previews by default and needs an explicit confirm. Campaign creation is always PAUSED. ### Google Ads Provider: `google` - `https://www.googleapis.com/auth/adwords` **(write)**: Read and write on Google Ads. Google publishes no read-only alternative, so read-only enforcement is done by this gateway, not by Google. What this gateway actually does: Write tools are hidden and refused on the Free plan. Every write previews by default and needs an explicit confirm. Campaign creation is always PAUSED. ### TikTok Ads Provider: `tiktok` _No scope is passed through the authorization URL._ TikTok does not pass permissions through the authorization URL. They are attached to the app in TikTok Business Center and shown to the advertiser when access is granted. What this gateway actually does: Write tools are hidden and refused on the Free plan. Every write previews by default and needs an explicit confirm. Campaign creation is always PAUSED. ### Search Console Provider: `google` - `https://www.googleapis.com/auth/webmasters.readonly`: Read Search Console performance, index coverage and sitemaps. Cannot modify anything. What this gateway actually does: Read only. This gateway exposes no write tool for this platform. ### Google Analytics 4 Provider: `google` - `https://www.googleapis.com/auth/analytics.readonly`: Read GA4 reports, metadata and property configuration. Cannot modify anything. What this gateway actually does: Read only. This gateway exposes no write tool for this platform. ## Two limits that apply to every platform **Accounts.** A connection often exposes far more than one ad account. One test Google Analytics connection reached fourteen properties. Nothing is reachable until the account owner ticks it in the dashboard, and the allowlist is checked server side on every call, including calls routed through `run_tool`. **Tokens.** Refresh and access tokens are encrypted at rest with AES-256-GCM. They are never returned by a tool, never written to a log, and never sent to the browser. Contact: contact@getmcpads.com