{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_2e7dkk7ypq3c","handle":"mcp-dir-google-ads","url":"https://wellknown.network/agents/mcp-dir-google-ads","links":{"self":"https://wellknown.network/agents/mcp-dir-google-ads/record.json","html":"https://wellknown.network/agents/mcp-dir-google-ads","markdown":"https://wellknown.network/agents/mcp-dir-google-ads/record.md","api":"https://wellknown.network/api/v1/agents/mcp-dir-google-ads","status":"https://wellknown.network/api/v1/agents/mcp-dir-google-ads/status","claim":"https://wellknown.network/agents/mcp-dir-google-ads/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mcp-dir-google-ads/claim.json","badge":"https://wellknown.network/agents/mcp-dir-google-ads/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:api.mcp.ai:server:mcp-dir-google-ads","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Google Ads","summary":"Full Google Ads management: read (campaigns, performance, ROAS, keywords, search terms) and write (p","description":"Full Google Ads management: read (campaigns, performance, ROAS, keywords, search terms) and write (p","publisher":{"name":"mcp-dir","url":null},"homepage":null,"repository":"https://github.com/mcp-dir/google_ads-mcp","version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.mcp.ai/p_google_ads","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-21T13:27:29.37795Z","publishedAt":"2026-08-21T13:27:29.37795Z","registryName":"io.github.mcp-dir/google_ads-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.marketing","name":"Marketing","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"content.seo","name":"SEO","confidence":0.938,"provenance":"derived"},{"slug":"security.secrets","name":"Secrets Management","confidence":0.569,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.554,"provenance":"derived"},{"slug":"data.news","name":"News & Feeds","confidence":0.54,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","data","documents","security"]},"observed":{"status":"live","statusReason":"Responded 33m ago.","lastOkAt":"2026-09-08T07:23:52.416Z","lastProbedAt":"2026-09-08T07:23:52.416Z","statusComputedAt":"2026-09-08T07:30:32.730Z","reliability30d":{"probes":2,"successRate":1,"p50Ms":126},"latestObservations":[{"at":"2026-09-08T07:23:52.416Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":125,"error":null,"detail":{"tools":[{"name":"google_ads_list_accounts","description":"List all Google Ads MCCs and ALL customer accounts the OAuth token can access (via customers:listAccessibleCustomers — not just hierarchy of the MCC). Each cust"},{"name":"google_ads_status","description":"Without account: overview of all Google Ads MCCs and customer_ids. With account (and optional customer_id): details for that scope.\n\nBulk support: accepts custo"},{"name":"google_ads_account","description":"Get Google Ads account info: name, currency, timezone for a customer (uses account + customer_id to resolve scope).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaigns","description":"List Google Ads campaigns with status and budgets. Default (ALL) returns both ENABLED and PAUSED campaigns; pass status ENABLED or PAUSED to narrow. REMOVED (de"},{"name":"google_ads_today","description":"Today Google Ads performance: cost, impressions, clicks, conversions, ROAS per campaign plus _summary.\n\nBulk support: accepts customer_ids for batched execution"},{"name":"google_ads_roas","description":"ROAS for a date range (defaults to current month). Per-campaign cost, conversions, revenue, plus _summary.\n\nBulk support: accepts customer_ids for batched execu"},{"name":"google_ads_ads","description":"List enabled ads with type, status, campaign name and ad_group_ad.policy_summary (approval_status, review_status, policy_topic_entries) — answers \"why is my ad "},{"name":"google_ads_keywords_keywords","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_search_terms","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_status","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_diagnostics","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_raw","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_performance","description":"Daily performance breakdown: cost, impressions, clicks, conversions, revenue per day.\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_changes","description":"Change history / audit log: who changed what in the account and when. Covers campaigns, ad groups, ads (headlines/descriptions/final URLs), keywords, budgets an"},{"name":"google_ads_campaign_update_status","description":"Pause, enable or remove one or more Google Ads campaigns. REMOVED is irreversible. Pass campaign ids from google_ads_campaigns. Google rejects status changes on"},{"name":"google_ads_campaign_update_budget","description":"Update the daily budget of a campaign. Pass the campaign id and the new amount in the account currency unit (R$50,50 -> 50.5; converted to micros internally).\n\n"},{"name":"google_ads_ad_group_update_status","description":"Pause, enable or remove ad groups. REMOVED is irreversible."},{"name":"google_ads_ad_update_status","description":"Pause, enable or remove ads. Each entry needs ad_group_id + ad_id because the ad resource is keyed by both (customers/X/adGroupAds/{ad_group_id}~{ad_id}).\n\nBulk"},{"name":"google_ads_keyword_update_status","description":"Pause, enable or remove keywords. Each entry needs ad_group_id + criterion_id (the keyword criterion id).\n\nBulk support: accepts customer_ids for batched execut"},{"name":"google_ads_keyword_update_bid","description":"Update max CPC for one or more keywords. Bid in account currency unit (e.g. 1.5 = R$1,50).\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_campaign_budget_create","description":"Create a campaign_budget. Required to create a campaign. Amount is daily, in account currency unit (50 = R$50/day).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaign_create","description":"Create a Google Ads campaign. Defaults to channel_type=SEARCH, status=PAUSED (safe), bidding_strategy=MANUAL_CPC. Provide budget_id from google_ads_campaign_bud"},{"name":"google_ads_ad_group_create","description":"Create an ad group inside a campaign. Default status ENABLED, type SEARCH_STANDARD. Optional cpc_bid as the ad-group-level default max CPC.\n\nBulk support: accep"},{"name":"google_ads_keyword_add","description":"Add positive keywords to an ad group. Each keyword: { text, match_type, cpc_bid? }. match_type = EXACT | PHRASE | BROAD.\n\nBulk support: accepts ad_group_ids, cu"},{"name":"google_ads_negative_keyword_add","description":"Add negative keywords at campaign or ad group scope. Pass scope + the matching target_id (campaign_id or ad_group_id).\n\nBulk support: accepts target_ids, custom"},{"name":"google_ads_responsive_search_ad_create","description":"Create a Responsive Search Ad (RSA) inside an ad group. Headlines: 3-15 entries (each <= 30 chars). Descriptions: 2-4 entries (each <= 90 chars). final_urls req"},{"name":"google_ads_sitelinks","description":"List sitelink assets in the account and where they are attached (campaign / account / ad group level), with each link's resource_name (pass it to google_ads_sit"},{"name":"google_ads_sitelink_create","description":"Create sitelink extensions and attach them to a campaign (default), the whole account (scope=customer) or an ad group. A sitelink is a SitelinkAsset (its own li"},{"name":"google_ads_sitelink_remove","description":"Detach sitelinks from a campaign / account / ad group. Pass the link_resource_name(s) from google_ads_sitelinks. Removes only the association (the shared siteli"},{"name":"show_version","description":"Show the current MCP platform and adapter versions."},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction."},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns conn"},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes."},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\","},{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <tok"}],"toolCount":35,"serverName":"mcp-ai","capabilities":["tools"],"serverVersion":"0.9.343","protocolVersion":"2025-06-18"}},{"at":"2026-09-08T00:19:19.406Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":128,"error":null,"detail":{"tools":[{"name":"google_ads_list_accounts","description":"List all Google Ads MCCs and ALL customer accounts the OAuth token can access (via customers:listAccessibleCustomers — not just hierarchy of the MCC). Each cust"},{"name":"google_ads_status","description":"Without account: overview of all Google Ads MCCs and customer_ids. With account (and optional customer_id): details for that scope.\n\nBulk support: accepts custo"},{"name":"google_ads_account","description":"Get Google Ads account info: name, currency, timezone for a customer (uses account + customer_id to resolve scope).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaigns","description":"List Google Ads campaigns with status and budgets. Default (ALL) returns both ENABLED and PAUSED campaigns; pass status ENABLED or PAUSED to narrow. REMOVED (de"},{"name":"google_ads_today","description":"Today Google Ads performance: cost, impressions, clicks, conversions, ROAS per campaign plus _summary.\n\nBulk support: accepts customer_ids for batched execution"},{"name":"google_ads_roas","description":"ROAS for a date range (defaults to current month). Per-campaign cost, conversions, revenue, plus _summary.\n\nBulk support: accepts customer_ids for batched execu"},{"name":"google_ads_ads","description":"List enabled ads with type, status, campaign name and ad_group_ad.policy_summary (approval_status, review_status, policy_topic_entries) — answers \"why is my ad "},{"name":"google_ads_keywords_keywords","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_search_terms","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_status","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_diagnostics","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_raw","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_performance","description":"Daily performance breakdown: cost, impressions, clicks, conversions, revenue per day.\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_changes","description":"Change history / audit log: who changed what in the account and when. Covers campaigns, ad groups, ads (headlines/descriptions/final URLs), keywords, budgets an"},{"name":"google_ads_campaign_update_status","description":"Pause, enable or remove one or more Google Ads campaigns. REMOVED is irreversible. Pass campaign ids from google_ads_campaigns. Google rejects status changes on"},{"name":"google_ads_campaign_update_budget","description":"Update the daily budget of a campaign. Pass the campaign id and the new amount in the account currency unit (R$50,50 -> 50.5; converted to micros internally).\n\n"},{"name":"google_ads_ad_group_update_status","description":"Pause, enable or remove ad groups. REMOVED is irreversible."},{"name":"google_ads_ad_update_status","description":"Pause, enable or remove ads. Each entry needs ad_group_id + ad_id because the ad resource is keyed by both (customers/X/adGroupAds/{ad_group_id}~{ad_id}).\n\nBulk"},{"name":"google_ads_keyword_update_status","description":"Pause, enable or remove keywords. Each entry needs ad_group_id + criterion_id (the keyword criterion id).\n\nBulk support: accepts customer_ids for batched execut"},{"name":"google_ads_keyword_update_bid","description":"Update max CPC for one or more keywords. Bid in account currency unit (e.g. 1.5 = R$1,50).\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_campaign_budget_create","description":"Create a campaign_budget. Required to create a campaign. Amount is daily, in account currency unit (50 = R$50/day).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaign_create","description":"Create a Google Ads campaign. Defaults to channel_type=SEARCH, status=PAUSED (safe), bidding_strategy=MANUAL_CPC. Provide budget_id from google_ads_campaign_bud"},{"name":"google_ads_ad_group_create","description":"Create an ad group inside a campaign. Default status ENABLED, type SEARCH_STANDARD. Optional cpc_bid as the ad-group-level default max CPC.\n\nBulk support: accep"},{"name":"google_ads_keyword_add","description":"Add positive keywords to an ad group. Each keyword: { text, match_type, cpc_bid? }. match_type = EXACT | PHRASE | BROAD.\n\nBulk support: accepts ad_group_ids, cu"},{"name":"google_ads_negative_keyword_add","description":"Add negative keywords at campaign or ad group scope. Pass scope + the matching target_id (campaign_id or ad_group_id).\n\nBulk support: accepts target_ids, custom"},{"name":"google_ads_responsive_search_ad_create","description":"Create a Responsive Search Ad (RSA) inside an ad group. Headlines: 3-15 entries (each <= 30 chars). Descriptions: 2-4 entries (each <= 90 chars). final_urls req"},{"name":"google_ads_sitelinks","description":"List sitelink assets in the account and where they are attached (campaign / account / ad group level), with each link's resource_name (pass it to google_ads_sit"},{"name":"google_ads_sitelink_create","description":"Create sitelink extensions and attach them to a campaign (default), the whole account (scope=customer) or an ad group. A sitelink is a SitelinkAsset (its own li"},{"name":"google_ads_sitelink_remove","description":"Detach sitelinks from a campaign / account / ad group. Pass the link_resource_name(s) from google_ads_sitelinks. Removes only the association (the shared siteli"},{"name":"show_version","description":"Show the current MCP platform and adapter versions."},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction."},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns conn"},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes."},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\","},{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <tok"}],"toolCount":35,"serverName":"mcp-ai","capabilities":["tools"],"serverVersion":"0.9.343","protocolVersion":"2025-06-18"}},{"at":"2026-09-07T17:22:18.195Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":132,"error":null,"detail":{"tools":[{"name":"google_ads_list_accounts","description":"List all Google Ads MCCs and ALL customer accounts the OAuth token can access (via customers:listAccessibleCustomers — not just hierarchy of the MCC). Each cust"},{"name":"google_ads_status","description":"Without account: overview of all Google Ads MCCs and customer_ids. With account (and optional customer_id): details for that scope.\n\nBulk support: accepts custo"},{"name":"google_ads_account","description":"Get Google Ads account info: name, currency, timezone for a customer (uses account + customer_id to resolve scope).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaigns","description":"List Google Ads campaigns with status and budgets. Default (ALL) returns both ENABLED and PAUSED campaigns; pass status ENABLED or PAUSED to narrow. REMOVED (de"},{"name":"google_ads_today","description":"Today Google Ads performance: cost, impressions, clicks, conversions, ROAS per campaign plus _summary.\n\nBulk support: accepts customer_ids for batched execution"},{"name":"google_ads_roas","description":"ROAS for a date range (defaults to current month). Per-campaign cost, conversions, revenue, plus _summary.\n\nBulk support: accepts customer_ids for batched execu"},{"name":"google_ads_ads","description":"List enabled ads with type, status, campaign name and ad_group_ad.policy_summary (approval_status, review_status, policy_topic_entries) — answers \"why is my ad "},{"name":"google_ads_keywords_keywords","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_search_terms","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_status","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_diagnostics","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_raw","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_performance","description":"Daily performance breakdown: cost, impressions, clicks, conversions, revenue per day.\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_changes","description":"Change history / audit log: who changed what in the account and when. Covers campaigns, ad groups, ads (headlines/descriptions/final URLs), keywords, budgets an"},{"name":"google_ads_campaign_update_status","description":"Pause, enable or remove one or more Google Ads campaigns. REMOVED is irreversible. Pass campaign ids from google_ads_campaigns. Google rejects status changes on"},{"name":"google_ads_campaign_update_budget","description":"Update the daily budget of a campaign. Pass the campaign id and the new amount in the account currency unit (R$50,50 -> 50.5; converted to micros internally).\n\n"},{"name":"google_ads_ad_group_update_status","description":"Pause, enable or remove ad groups. REMOVED is irreversible."},{"name":"google_ads_ad_update_status","description":"Pause, enable or remove ads. Each entry needs ad_group_id + ad_id because the ad resource is keyed by both (customers/X/adGroupAds/{ad_group_id}~{ad_id}).\n\nBulk"},{"name":"google_ads_keyword_update_status","description":"Pause, enable or remove keywords. Each entry needs ad_group_id + criterion_id (the keyword criterion id).\n\nBulk support: accepts customer_ids for batched execut"},{"name":"google_ads_keyword_update_bid","description":"Update max CPC for one or more keywords. Bid in account currency unit (e.g. 1.5 = R$1,50).\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_campaign_budget_create","description":"Create a campaign_budget. Required to create a campaign. Amount is daily, in account currency unit (50 = R$50/day).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaign_create","description":"Create a Google Ads campaign. Defaults to channel_type=SEARCH, status=PAUSED (safe), bidding_strategy=MANUAL_CPC. Provide budget_id from google_ads_campaign_bud"},{"name":"google_ads_ad_group_create","description":"Create an ad group inside a campaign. Default status ENABLED, type SEARCH_STANDARD. Optional cpc_bid as the ad-group-level default max CPC.\n\nBulk support: accep"},{"name":"google_ads_keyword_add","description":"Add positive keywords to an ad group. Each keyword: { text, match_type, cpc_bid? }. match_type = EXACT | PHRASE | BROAD.\n\nBulk support: accepts ad_group_ids, cu"},{"name":"google_ads_negative_keyword_add","description":"Add negative keywords at campaign or ad group scope. Pass scope + the matching target_id (campaign_id or ad_group_id).\n\nBulk support: accepts target_ids, custom"},{"name":"google_ads_responsive_search_ad_create","description":"Create a Responsive Search Ad (RSA) inside an ad group. Headlines: 3-15 entries (each <= 30 chars). Descriptions: 2-4 entries (each <= 90 chars). final_urls req"},{"name":"google_ads_sitelinks","description":"List sitelink assets in the account and where they are attached (campaign / account / ad group level), with each link's resource_name (pass it to google_ads_sit"},{"name":"google_ads_sitelink_create","description":"Create sitelink extensions and attach them to a campaign (default), the whole account (scope=customer) or an ad group. A sitelink is a SitelinkAsset (its own li"},{"name":"google_ads_sitelink_remove","description":"Detach sitelinks from a campaign / account / ad group. Pass the link_resource_name(s) from google_ads_sitelinks. Removes only the association (the shared siteli"},{"name":"show_version","description":"Show the current MCP platform and adapter versions."},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction."},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns conn"},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes."},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\","},{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <tok"}],"toolCount":35,"serverName":"mcp-ai","capabilities":["tools"],"serverVersion":"0.9.343","protocolVersion":"2025-06-18"}},{"at":"2026-09-07T10:22:56.427Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":148,"error":null,"detail":{"tools":[{"name":"google_ads_list_accounts","description":"List all Google Ads MCCs and ALL customer accounts the OAuth token can access (via customers:listAccessibleCustomers — not just hierarchy of the MCC). Each cust"},{"name":"google_ads_status","description":"Without account: overview of all Google Ads MCCs and customer_ids. With account (and optional customer_id): details for that scope.\n\nBulk support: accepts custo"},{"name":"google_ads_account","description":"Get Google Ads account info: name, currency, timezone for a customer (uses account + customer_id to resolve scope).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaigns","description":"List Google Ads campaigns with status and budgets. Default (ALL) returns both ENABLED and PAUSED campaigns; pass status ENABLED or PAUSED to narrow. REMOVED (de"},{"name":"google_ads_today","description":"Today Google Ads performance: cost, impressions, clicks, conversions, ROAS per campaign plus _summary.\n\nBulk support: accepts customer_ids for batched execution"},{"name":"google_ads_roas","description":"ROAS for a date range (defaults to current month). Per-campaign cost, conversions, revenue, plus _summary.\n\nBulk support: accepts customer_ids for batched execu"},{"name":"google_ads_ads","description":"List enabled ads with type, status, campaign name and ad_group_ad.policy_summary (approval_status, review_status, policy_topic_entries) — answers \"why is my ad "},{"name":"google_ads_keywords_keywords","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_search_terms","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_status","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_diagnostics","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_raw","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_performance","description":"Daily performance breakdown: cost, impressions, clicks, conversions, revenue per day.\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_changes","description":"Change history / audit log: who changed what in the account and when. Covers campaigns, ad groups, ads (headlines/descriptions/final URLs), keywords, budgets an"},{"name":"google_ads_campaign_update_status","description":"Pause, enable or remove one or more Google Ads campaigns. REMOVED is irreversible. Pass campaign ids from google_ads_campaigns. Google rejects status changes on"},{"name":"google_ads_campaign_update_budget","description":"Update the daily budget of a campaign. Pass the campaign id and the new amount in the account currency unit (R$50,50 -> 50.5; converted to micros internally).\n\n"},{"name":"google_ads_ad_group_update_status","description":"Pause, enable or remove ad groups. REMOVED is irreversible."},{"name":"google_ads_ad_update_status","description":"Pause, enable or remove ads. Each entry needs ad_group_id + ad_id because the ad resource is keyed by both (customers/X/adGroupAds/{ad_group_id}~{ad_id}).\n\nBulk"},{"name":"google_ads_keyword_update_status","description":"Pause, enable or remove keywords. Each entry needs ad_group_id + criterion_id (the keyword criterion id).\n\nBulk support: accepts customer_ids for batched execut"},{"name":"google_ads_keyword_update_bid","description":"Update max CPC for one or more keywords. Bid in account currency unit (e.g. 1.5 = R$1,50).\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_campaign_budget_create","description":"Create a campaign_budget. Required to create a campaign. Amount is daily, in account currency unit (50 = R$50/day).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaign_create","description":"Create a Google Ads campaign. Defaults to channel_type=SEARCH, status=PAUSED (safe), bidding_strategy=MANUAL_CPC. Provide budget_id from google_ads_campaign_bud"},{"name":"google_ads_ad_group_create","description":"Create an ad group inside a campaign. Default status ENABLED, type SEARCH_STANDARD. Optional cpc_bid as the ad-group-level default max CPC.\n\nBulk support: accep"},{"name":"google_ads_keyword_add","description":"Add positive keywords to an ad group. Each keyword: { text, match_type, cpc_bid? }. match_type = EXACT | PHRASE | BROAD.\n\nBulk support: accepts ad_group_ids, cu"},{"name":"google_ads_negative_keyword_add","description":"Add negative keywords at campaign or ad group scope. Pass scope + the matching target_id (campaign_id or ad_group_id).\n\nBulk support: accepts target_ids, custom"},{"name":"google_ads_responsive_search_ad_create","description":"Create a Responsive Search Ad (RSA) inside an ad group. Headlines: 3-15 entries (each <= 30 chars). Descriptions: 2-4 entries (each <= 90 chars). final_urls req"},{"name":"google_ads_sitelinks","description":"List sitelink assets in the account and where they are attached (campaign / account / ad group level), with each link's resource_name (pass it to google_ads_sit"},{"name":"google_ads_sitelink_create","description":"Create sitelink extensions and attach them to a campaign (default), the whole account (scope=customer) or an ad group. A sitelink is a SitelinkAsset (its own li"},{"name":"google_ads_sitelink_remove","description":"Detach sitelinks from a campaign / account / ad group. Pass the link_resource_name(s) from google_ads_sitelinks. Removes only the association (the shared siteli"},{"name":"show_version","description":"Show the current MCP platform and adapter versions."},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction."},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns conn"},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes."},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\","},{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <tok"}],"toolCount":35,"serverName":"mcp-ai","capabilities":["tools"],"serverVersion":"0.9.343","protocolVersion":"2025-06-18"}},{"at":"2026-09-07T03:28:09.110Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":128,"error":null,"detail":{"tools":[{"name":"google_ads_list_accounts","description":"List all Google Ads MCCs and ALL customer accounts the OAuth token can access (via customers:listAccessibleCustomers — not just hierarchy of the MCC). Each cust"},{"name":"google_ads_status","description":"Without account: overview of all Google Ads MCCs and customer_ids. With account (and optional customer_id): details for that scope.\n\nBulk support: accepts custo"},{"name":"google_ads_account","description":"Get Google Ads account info: name, currency, timezone for a customer (uses account + customer_id to resolve scope).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaigns","description":"List Google Ads campaigns with status and budgets. Default (ALL) returns both ENABLED and PAUSED campaigns; pass status ENABLED or PAUSED to narrow. REMOVED (de"},{"name":"google_ads_today","description":"Today Google Ads performance: cost, impressions, clicks, conversions, ROAS per campaign plus _summary.\n\nBulk support: accepts customer_ids for batched execution"},{"name":"google_ads_roas","description":"ROAS for a date range (defaults to current month). Per-campaign cost, conversions, revenue, plus _summary.\n\nBulk support: accepts customer_ids for batched execu"},{"name":"google_ads_ads","description":"List enabled ads with type, status, campaign name and ad_group_ad.policy_summary (approval_status, review_status, policy_topic_entries) — answers \"why is my ad "},{"name":"google_ads_keywords_keywords","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_search_terms","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_status","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_diagnostics","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_raw","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_performance","description":"Daily performance breakdown: cost, impressions, clicks, conversions, revenue per day.\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_changes","description":"Change history / audit log: who changed what in the account and when. Covers campaigns, ad groups, ads (headlines/descriptions/final URLs), keywords, budgets an"},{"name":"google_ads_campaign_update_status","description":"Pause, enable or remove one or more Google Ads campaigns. REMOVED is irreversible. Pass campaign ids from google_ads_campaigns. Google rejects status changes on"},{"name":"google_ads_campaign_update_budget","description":"Update the daily budget of a campaign. Pass the campaign id and the new amount in the account currency unit (R$50,50 -> 50.5; converted to micros internally).\n\n"},{"name":"google_ads_ad_group_update_status","description":"Pause, enable or remove ad groups. REMOVED is irreversible."},{"name":"google_ads_ad_update_status","description":"Pause, enable or remove ads. Each entry needs ad_group_id + ad_id because the ad resource is keyed by both (customers/X/adGroupAds/{ad_group_id}~{ad_id}).\n\nBulk"},{"name":"google_ads_keyword_update_status","description":"Pause, enable or remove keywords. Each entry needs ad_group_id + criterion_id (the keyword criterion id).\n\nBulk support: accepts customer_ids for batched execut"},{"name":"google_ads_keyword_update_bid","description":"Update max CPC for one or more keywords. Bid in account currency unit (e.g. 1.5 = R$1,50).\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_campaign_budget_create","description":"Create a campaign_budget. Required to create a campaign. Amount is daily, in account currency unit (50 = R$50/day).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaign_create","description":"Create a Google Ads campaign. Defaults to channel_type=SEARCH, status=PAUSED (safe), bidding_strategy=MANUAL_CPC. Provide budget_id from google_ads_campaign_bud"},{"name":"google_ads_ad_group_create","description":"Create an ad group inside a campaign. Default status ENABLED, type SEARCH_STANDARD. Optional cpc_bid as the ad-group-level default max CPC.\n\nBulk support: accep"},{"name":"google_ads_keyword_add","description":"Add positive keywords to an ad group. Each keyword: { text, match_type, cpc_bid? }. match_type = EXACT | PHRASE | BROAD.\n\nBulk support: accepts ad_group_ids, cu"},{"name":"google_ads_negative_keyword_add","description":"Add negative keywords at campaign or ad group scope. Pass scope + the matching target_id (campaign_id or ad_group_id).\n\nBulk support: accepts target_ids, custom"},{"name":"google_ads_responsive_search_ad_create","description":"Create a Responsive Search Ad (RSA) inside an ad group. Headlines: 3-15 entries (each <= 30 chars). Descriptions: 2-4 entries (each <= 90 chars). final_urls req"},{"name":"google_ads_sitelinks","description":"List sitelink assets in the account and where they are attached (campaign / account / ad group level), with each link's resource_name (pass it to google_ads_sit"},{"name":"google_ads_sitelink_create","description":"Create sitelink extensions and attach them to a campaign (default), the whole account (scope=customer) or an ad group. A sitelink is a SitelinkAsset (its own li"},{"name":"google_ads_sitelink_remove","description":"Detach sitelinks from a campaign / account / ad group. Pass the link_resource_name(s) from google_ads_sitelinks. Removes only the association (the shared siteli"},{"name":"show_version","description":"Show the current MCP platform and adapter versions."},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction."},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns conn"},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes."},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\","},{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <tok"}],"toolCount":35,"serverName":"mcp-ai","capabilities":["tools"],"serverVersion":"0.9.343","protocolVersion":"2025-06-18"}},{"at":"2026-09-06T20:25:50.683Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":131,"error":null,"detail":{"tools":[{"name":"google_ads_list_accounts","description":"List all Google Ads MCCs and ALL customer accounts the OAuth token can access (via customers:listAccessibleCustomers — not just hierarchy of the MCC). Each cust"},{"name":"google_ads_status","description":"Without account: overview of all Google Ads MCCs and customer_ids. With account (and optional customer_id): details for that scope.\n\nBulk support: accepts custo"},{"name":"google_ads_account","description":"Get Google Ads account info: name, currency, timezone for a customer (uses account + customer_id to resolve scope).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaigns","description":"List Google Ads campaigns with status and budgets. Default (ALL) returns both ENABLED and PAUSED campaigns; pass status ENABLED or PAUSED to narrow. REMOVED (de"},{"name":"google_ads_today","description":"Today Google Ads performance: cost, impressions, clicks, conversions, ROAS per campaign plus _summary.\n\nBulk support: accepts customer_ids for batched execution"},{"name":"google_ads_roas","description":"ROAS for a date range (defaults to current month). Per-campaign cost, conversions, revenue, plus _summary.\n\nBulk support: accepts customer_ids for batched execu"},{"name":"google_ads_ads","description":"List enabled ads with type, status, campaign name and ad_group_ad.policy_summary (approval_status, review_status, policy_topic_entries) — answers \"why is my ad "},{"name":"google_ads_keywords_keywords","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_search_terms","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_status","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_diagnostics","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_raw","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_performance","description":"Daily performance breakdown: cost, impressions, clicks, conversions, revenue per day.\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_changes","description":"Change history / audit log: who changed what in the account and when. Covers campaigns, ad groups, ads (headlines/descriptions/final URLs), keywords, budgets an"},{"name":"google_ads_campaign_update_status","description":"Pause, enable or remove one or more Google Ads campaigns. REMOVED is irreversible. Pass campaign ids from google_ads_campaigns. Google rejects status changes on"},{"name":"google_ads_campaign_update_budget","description":"Update the daily budget of a campaign. Pass the campaign id and the new amount in the account currency unit (R$50,50 -> 50.5; converted to micros internally).\n\n"},{"name":"google_ads_ad_group_update_status","description":"Pause, enable or remove ad groups. REMOVED is irreversible."},{"name":"google_ads_ad_update_status","description":"Pause, enable or remove ads. Each entry needs ad_group_id + ad_id because the ad resource is keyed by both (customers/X/adGroupAds/{ad_group_id}~{ad_id}).\n\nBulk"},{"name":"google_ads_keyword_update_status","description":"Pause, enable or remove keywords. Each entry needs ad_group_id + criterion_id (the keyword criterion id).\n\nBulk support: accepts customer_ids for batched execut"},{"name":"google_ads_keyword_update_bid","description":"Update max CPC for one or more keywords. Bid in account currency unit (e.g. 1.5 = R$1,50).\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_campaign_budget_create","description":"Create a campaign_budget. Required to create a campaign. Amount is daily, in account currency unit (50 = R$50/day).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaign_create","description":"Create a Google Ads campaign. Defaults to channel_type=SEARCH, status=PAUSED (safe), bidding_strategy=MANUAL_CPC. Provide budget_id from google_ads_campaign_bud"},{"name":"google_ads_ad_group_create","description":"Create an ad group inside a campaign. Default status ENABLED, type SEARCH_STANDARD. Optional cpc_bid as the ad-group-level default max CPC.\n\nBulk support: accep"},{"name":"google_ads_keyword_add","description":"Add positive keywords to an ad group. Each keyword: { text, match_type, cpc_bid? }. match_type = EXACT | PHRASE | BROAD.\n\nBulk support: accepts ad_group_ids, cu"},{"name":"google_ads_negative_keyword_add","description":"Add negative keywords at campaign or ad group scope. Pass scope + the matching target_id (campaign_id or ad_group_id).\n\nBulk support: accepts target_ids, custom"},{"name":"google_ads_responsive_search_ad_create","description":"Create a Responsive Search Ad (RSA) inside an ad group. Headlines: 3-15 entries (each <= 30 chars). Descriptions: 2-4 entries (each <= 90 chars). final_urls req"},{"name":"google_ads_sitelinks","description":"List sitelink assets in the account and where they are attached (campaign / account / ad group level), with each link's resource_name (pass it to google_ads_sit"},{"name":"google_ads_sitelink_create","description":"Create sitelink extensions and attach them to a campaign (default), the whole account (scope=customer) or an ad group. A sitelink is a SitelinkAsset (its own li"},{"name":"google_ads_sitelink_remove","description":"Detach sitelinks from a campaign / account / ad group. Pass the link_resource_name(s) from google_ads_sitelinks. Removes only the association (the shared siteli"},{"name":"show_version","description":"Show the current MCP platform and adapter versions."},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction."},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns conn"},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes."},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\","},{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <tok"}],"toolCount":35,"serverName":"mcp-ai","capabilities":["tools"],"serverVersion":"0.9.342","protocolVersion":"2025-06-18"}}],"tools":[{"name":"google_ads_list_accounts","description":"List all Google Ads MCCs and ALL customer accounts the OAuth token can access (via customers:listAccessibleCustomers — not just hierarchy of the MCC). Each cust"},{"name":"google_ads_status","description":"Without account: overview of all Google Ads MCCs and customer_ids. With account (and optional customer_id): details for that scope.\n\nBulk support: accepts custo"},{"name":"google_ads_account","description":"Get Google Ads account info: name, currency, timezone for a customer (uses account + customer_id to resolve scope).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaigns","description":"List Google Ads campaigns with status and budgets. Default (ALL) returns both ENABLED and PAUSED campaigns; pass status ENABLED or PAUSED to narrow. REMOVED (de"},{"name":"google_ads_today","description":"Today Google Ads performance: cost, impressions, clicks, conversions, ROAS per campaign plus _summary.\n\nBulk support: accepts customer_ids for batched execution"},{"name":"google_ads_roas","description":"ROAS for a date range (defaults to current month). Per-campaign cost, conversions, revenue, plus _summary.\n\nBulk support: accepts customer_ids for batched execu"},{"name":"google_ads_ads","description":"List enabled ads with type, status, campaign name and ad_group_ad.policy_summary (approval_status, review_status, policy_topic_entries) — answers \"why is my ad "},{"name":"google_ads_keywords_keywords","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_search_terms","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_status","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_diagnostics","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_keywords_raw","description":"Keyword analytics, search terms, status/policy diagnostics, auction diagnostics, or custom GAQL SELECT. Uses account + customer_id for scope. Actions: `keywords"},{"name":"google_ads_performance","description":"Daily performance breakdown: cost, impressions, clicks, conversions, revenue per day.\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_changes","description":"Change history / audit log: who changed what in the account and when. Covers campaigns, ad groups, ads (headlines/descriptions/final URLs), keywords, budgets an"},{"name":"google_ads_campaign_update_status","description":"Pause, enable or remove one or more Google Ads campaigns. REMOVED is irreversible. Pass campaign ids from google_ads_campaigns. Google rejects status changes on"},{"name":"google_ads_campaign_update_budget","description":"Update the daily budget of a campaign. Pass the campaign id and the new amount in the account currency unit (R$50,50 -> 50.5; converted to micros internally).\n\n"},{"name":"google_ads_ad_group_update_status","description":"Pause, enable or remove ad groups. REMOVED is irreversible."},{"name":"google_ads_ad_update_status","description":"Pause, enable or remove ads. Each entry needs ad_group_id + ad_id because the ad resource is keyed by both (customers/X/adGroupAds/{ad_group_id}~{ad_id}).\n\nBulk"},{"name":"google_ads_keyword_update_status","description":"Pause, enable or remove keywords. Each entry needs ad_group_id + criterion_id (the keyword criterion id).\n\nBulk support: accepts customer_ids for batched execut"},{"name":"google_ads_keyword_update_bid","description":"Update max CPC for one or more keywords. Bid in account currency unit (e.g. 1.5 = R$1,50).\n\nBulk support: accepts customer_ids for batched execution."},{"name":"google_ads_campaign_budget_create","description":"Create a campaign_budget. Required to create a campaign. Amount is daily, in account currency unit (50 = R$50/day).\n\nBulk support: accepts customer_ids for batc"},{"name":"google_ads_campaign_create","description":"Create a Google Ads campaign. Defaults to channel_type=SEARCH, status=PAUSED (safe), bidding_strategy=MANUAL_CPC. Provide budget_id from google_ads_campaign_bud"},{"name":"google_ads_ad_group_create","description":"Create an ad group inside a campaign. Default status ENABLED, type SEARCH_STANDARD. Optional cpc_bid as the ad-group-level default max CPC.\n\nBulk support: accep"},{"name":"google_ads_keyword_add","description":"Add positive keywords to an ad group. Each keyword: { text, match_type, cpc_bid? }. match_type = EXACT | PHRASE | BROAD.\n\nBulk support: accepts ad_group_ids, cu"},{"name":"google_ads_negative_keyword_add","description":"Add negative keywords at campaign or ad group scope. Pass scope + the matching target_id (campaign_id or ad_group_id).\n\nBulk support: accepts target_ids, custom"},{"name":"google_ads_responsive_search_ad_create","description":"Create a Responsive Search Ad (RSA) inside an ad group. Headlines: 3-15 entries (each <= 30 chars). Descriptions: 2-4 entries (each <= 90 chars). final_urls req"},{"name":"google_ads_sitelinks","description":"List sitelink assets in the account and where they are attached (campaign / account / ad group level), with each link's resource_name (pass it to google_ads_sit"},{"name":"google_ads_sitelink_create","description":"Create sitelink extensions and attach them to a campaign (default), the whole account (scope=customer) or an ad group. A sitelink is a SitelinkAsset (its own li"},{"name":"google_ads_sitelink_remove","description":"Detach sitelinks from a campaign / account / ad group. Pass the link_resource_name(s) from google_ads_sitelinks. Removes only the association (the shared siteli"},{"name":"show_version","description":"Show the current MCP platform and adapter versions."},{"name":"report_bug","description":"Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction."},{"name":"connect","description":"Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns conn"},{"name":"toolkit_info","description":"Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes."},{"name":"marketplace","description":"The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like \"find an MCP that does X\","},{"name":"authenticate","description":"MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <tok"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.mcp-dir/google_ads-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.mcp-dir%2Fgoogle_ads-mcp","firstSeenAt":"2026-09-06T19:18:47.349Z","fetchedAt":"2026-09-06T19:18:47.349Z","normalizedAt":"2026-09-06T19:18:47.349Z"}]},"firstSeenAt":"2026-09-06T19:18:47.349Z","updatedAt":"2026-09-08T07:30:57.678Z"}