Tool catalog
What this endpoint advertises
This endpoint currently advertises 71 public tools: 54 read-only and 17 write-capable. Advertised capabilities and your entitled access are separate. Access depends on your plan, connected accounts and permissions.
Search and filter are optional. Every tool stays listed below.
Google Ads
12 tools · 12 read
-
Google Ads · List customer clientsRead
ga_list_customer_clients_toolLists client accounts beneath a Google Ads manager account, traversing up to three hierarchy levels. Accepts manager_id. Returns each client's ID, name, currency, time zone, status, manager flag, and hierarchy level.
-
Google Ads · List campaignsRead
ga_list_campaigns_toolLists Google Ads campaigns for customer_id, with optional status, limit, and login_customer_id filters. Returns campaign IDs, names, statuses, channel types, bidding strategies, and daily budgets in account-currency units.
-
Google Ads · List ad groupsRead
ga_list_ad_groups_toolLists Google Ads ad groups for customer_id, optionally limited by campaign_id, limit, and login_customer_id. Returns the matching ad-group records with their campaign context and status.
-
Google Ads · List keywordsRead
ga_list_keywords_toolLists Google Ads keyword criteria for customer_id, with optional ad_group_id, limit, and login_customer_id filters. Returns keyword text, match type, status, and related campaign and ad-group data.
-
Google Ads · List adsRead
ga_list_ads_toolLists Google Ads ads for customer_id, with optional ad_group_id, status, limit, and login_customer_id filters. Returns ad IDs, types, statuses, final URLs, and campaign and ad-group context; creative text is not included.
-
Google Ads · Account performanceRead
ga_account_performance_toolReports Google Ads account performance for customer_id and date_range, with optional login_customer_id. Returns a summary and Markdown containing impressions, clicks, CTR, cost, average CPC, conversions, conversion value, and cost per conversion in account-currency units.
-
Google Ads · Keyword performanceRead
ga_keyword_performance_toolReports Google Ads keyword performance for customer_id and date_range, with optional min_impressions, limit, and login_customer_id. Returns cost-sorted keyword rows and bounded Markdown with traffic, cost, conversion, and CPA metrics in account-currency units.
-
Google Ads · Campaign performanceRead
ga_campaign_performance_toolReports Google Ads campaign performance for customer_id and date_range (a preset or YYYY-MM-DD,YYYY-MM-DD), with optional limit and login_customer_id. Set segment_by_day to include each date and account currency. Returns cost-sorted campaign rows and bounded Markdown with impressions, clicks, CTR, cost, CPC, conversions, conversion value, and CPA in account-currency units, with a truncated flag when the row limit is reached.
-
Google Ads · Search terms reportRead
ga_search_terms_report_toolReports the Google Ads search queries that generated traffic for customer_id and date_range, with optional limit, min_impressions, and login_customer_id. Returns cost-sorted query rows and bounded Markdown with campaign, ad-group, impression, click, cost, and conversion data.
-
Google Ads · List recommendationsRead
ga_list_recommendations_toolLists active Google Ads recommendations for customer_id, with optional limit and login_customer_id. Returns bounded recommendation records with recommendation types and available estimated-impact data.
-
Google Ads · List change eventsRead
ga_list_change_events_toolLists recent Google Ads change events for customer_id. Accepts days, limit, and optional login_customer_id. Returns bounded records describing when a change occurred, what changed, and the responsible actor when Google provides it.
-
Google Ads · List accessible customersRead
ga_accessible_customers_toolLists every Google Ads account accessible to the signed-in user, including direct accounts, manager accounts, and client accounts reached through an MCC. Takes no inputs. Returns an MCC-aware account tree with account IDs, names, manager flags, and via_manager relationships.
Other tools and workflows
38 tools · 21 read · 17 write
-
Google Ads · Ad performanceRead
ga_ad_performance_tool(read-only) Per-ad performance for a date range, sorted by spend (highest first). When to use: ad-level reporting and creative decisions - which ads spend, which convert, which to pause. `ga_list_ads_tool` is the structural inventory and carries no metrics; this is the ad_group_ad report. For per-asset (headline/description) numbers use `ga_rsa_asset_performance_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK). MCC accounts need login_customer_id. Optional filters: ad_group_id, campaign_id, and status (ENABLED / PAUSED / REMOVED). date_range presets: last_7_days through last_90_days, this_month, last_month. Returns: dict with keys [customer_id, date_range, count, ads, markdown]. Each row: ad id, ad type, ad status, ad name, ad group id + name, campaign id + name, impressions, clicks, CTR, cost, avg CPC, conversions, CPA. Gotchas: - All money in account-currency units (micros auto-converted). - Sorted by cost, so a small `limit` can hide cheap-but-converting ads. - Ads with no impressions in the window do not appear at all. Example: ga_ad_performance_tool(customer_id="1234567890", date_range="last_30_days", status="ENABLED") Visualization: ranked table grouped by campaign.
-
Google Ads · Pause campaignWrite
ga_pause_campaign_tool(write - immediate) Pause a campaign by id. Delivery stops; applies on first call, no dry-run. When to use: emergency stop on overspend, end of a promo, or acting on an audit finding. To pause a single keyword instead use `ga_pause_keyword_tool`; for an ad group `ga_pause_ad_group_tool`; for one ad `ga_pause_ad_tool`. Reverse with `ga_enable_campaign_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK); campaign_id from `ga_list_campaigns_tool`. MCC accounts need login_customer_id. Returns: dict with keys [ok, ...] plus a `markdown` confirmation card with next steps. On failure returns {error}. Gotchas: - Immediate and account-wide for that campaign - there is NO dry-run on this legacy-family write. Confirm with the user before calling. - Pausing does not stop other campaigns sharing the same budget resource. - Re-enabling later can restart smart-bidding learning; expect a few days of volatility after long pauses. - Auto-logs the action to the linked client work log (best-effort). Example: ga_pause_campaign_tool(customer_id="1234567890", campaign_id="555111") Visualization: confirmation card.
-
Google Ads · Enable campaignWrite
ga_enable_campaign_tool(write - immediate) Enable (resume) a previously paused campaign. Applies on first call, no dry-run. When to use: relaunching after a pause - promo restart, budget refreshed, issue fixed. Counterpart of `ga_pause_campaign_tool`. For keywords / ad groups / ads use `ga_enable_keyword_tool` / `ga_enable_ad_group_tool` / `ga_enable_ad_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK); campaign_id from `ga_list_campaigns_tool`. MCC accounts need login_customer_id. The campaign should currently be PAUSED (enabling an already-ENABLED campaign is a harmless no-op). Returns: dict with keys [ok, ...] plus a `markdown` confirmation card. On failure returns {error}. Gotchas: - Spend resumes immediately at the campaign's existing budget - check the budget with `ga_list_campaigns_tool` before enabling something that has sat paused for months. - Child entities keep their own status: paused ad groups/keywords inside stay paused. - Smart-bidding may re-enter learning after a long pause. - Auto-logs the action to the linked client work log (best-effort). Example: ga_enable_campaign_tool(customer_id="1234567890", campaign_id="555111") Visualization: confirmation card.
-
Google Ads · Add negative keywordWrite
ga_add_negative_keyword_tool(write - immediate) Add ONE campaign-level negative keyword. Applies on first call, no dry-run. When to use: blocking a wasteful query found in `ga_search_terms_report_tool`. For many negatives at once use `ga_add_negative_kws_bulk_tool`; for ad-group level use `ga_add_ad_group_neg_kw_tool`; account-wide use `ga_add_account_neg_kw_tool`; reusable lists across campaigns use the shared-set tools (`ga_create_shared_neglist_tool`). Preconditions: customer_id is the 10-digit account id (dashes OK); campaign_id from `ga_list_campaigns_tool`. match_type: EXACT (default) / PHRASE / BROAD. MCC accounts need login_customer_id. Returns: dict with keys [ok, resource_name, campaign_id, keyword, match_type] plus a `markdown` confirmation card. Gotchas: - Negative match types are STRICTER than positives - negatives do not block close variants, plurals, or misspellings. An EXACT negative for "free course" still lets "free courses" through; add variants explicitly. - Blocks future matching only; spend already incurred stays. - Adding the same negative twice errors rather than duplicating. - Auto-logs the action to the linked client work log (best-effort). Example: ga_add_negative_keyword_tool(customer_id="1234567890", campaign_id="555111", keyword_text="free", match_type="BROAD") Visualization: confirmation card.
-
On-page SEO crawl/audit of a live URLRead
seo_page_audit_tool(read-only) Fetch a live URL and audit its on-page SEO signals from the REAL HTML - no estimates, no fabrication. When to use: on-page technical/content SEO audit of a specific page. This makes a real outbound HTTP GET and parses the returned HTML. For organic search *performance* (clicks, impressions, rankings) use the Search Console tools; for page *speed* / Core Web Vitals use `seo_core_web_vitals_tool`. Preconditions: `url` is a public web page (scheme optional - https:// is assumed if omitted). Requires outbound network access from the server. Returns: dict with `final_url`, `status_code`, `title` (+ length), `meta_description` (+ length), `meta_robots`, `canonical`, `h1s` (+ count), `hreflang`, `structured_data_types` (JSON-LD @type list actually present), `word_count`, `links` (internal/external/total), and `images` (total / with_alt / alt_coverage). On any failure returns `{"error": ...}`. Gotchas: - Only the server-rendered HTML is parsed - content injected later by JavaScript is not seen (same as a plain crawler). - Redirects are followed; `final_url` reflects the landing URL. - A non-HTML response (PDF, image) returns an error, not a partial audit. Example: seo_page_audit_tool(url="https://example.com/pricing") Visualization: key-value detail card + sub-tables for links/images/hreflang.
-
SEO · Core Web Vitals via Google PageSpeed InsightsRead
seo_core_web_vitals_tool(read-only) Real Core Web Vitals for a URL via the Google PageSpeed Insights API v5 - real field (CrUX) + lab (Lighthouse) metrics, never fabricated. When to use: measuring LCP, CLS, INP, TBT, FCP and the overall performance score for a page. Complements `seo_page_audit_tool` (on-page HTML signals). Preconditions: env var `PAGESPEED_API_KEY` must be configured on the server. If it is unset the tool returns `{"error": "PAGESPEED_API_KEY not configured", "implemented": true}` - it never invents a result and never echoes the key. Requires outbound network. Parameters: `strategy` is "mobile" (default) or "desktop". Returns: dict with `field_data` and `origin_field_data` (real-user CrUX percentiles + GOOD/NEEDS_IMPROVEMENT/POOR categories), `lab_data` (Lighthouse performance score + LCP/CLS/TBT/FCP/Speed-Index/INP lab metrics), and `analysis_timestamp`. If the lab run times out (35 s) it returns `partial: true` with a `note`, empty `lab_data` metrics and real-user field data from the Chrome UX Report. On failure returns `{"error": ...}`. Gotchas: - Field (CrUX) data may be empty for low-traffic URLs; lab data is always returned when the run succeeds. - Lab metrics are a single synthetic run and vary between calls. - Results are cached per URL + strategy: 6 h, or 30 min for a partial result. `analysis_timestamp` says when the lab run happened. Example: seo_core_web_vitals_tool(url="https://example.com", strategy="mobile") Visualization: two-column card (field vs lab) with GOOD/NI/POOR badges.
-
Google Ads · Pause ad groupWrite
ga_pause_ad_group_toolGoogle Ads: pause an ad group.
-
Google Ads · Enable ad groupWrite
ga_enable_ad_group_toolGoogle Ads: enable a paused ad group.
-
Google Ads · Pause keywordWrite
ga_pause_keyword_tool(write - immediate) Pause a single keyword criterion. Applies on first call, no dry-run. When to use: the standard "apply" step after `ga_find_wasted_spend_tool` or `ga_audit_account_tool` propose pause_keyword actions, or after a bad row in `ga_keyword_performance_tool`. To stop a query rather than a keyword, prefer `ga_add_negative_keyword_tool`. Reverse with `ga_enable_keyword_tool`. Preconditions: customer_id is the 10-digit account id (dashes OK). Needs BOTH ad_group_id and criterion_id - get them from `ga_list_keywords_tool`, `ga_keyword_performance_tool`, or the proposed_actions emitted by the optimization tools. MCC accounts need login_customer_id. Returns: dict with keys [ok, ...] plus a `markdown` confirmation card with next steps. On failure returns {error}. Gotchas: - Immediate - show the user which keyword (text, not just criterion_id) before calling; optimization tools include the text in their findings. - Pausing a keyword does not block the query from matching OTHER broad keywords in the account - add a negative if the query itself is bad. - Auto-logs the action to the linked client work log (best-effort). Example: ga_pause_keyword_tool(customer_id="1234567890", ad_group_id="777333", criterion_id="298714") Visualization: confirmation card.
-
Google Ads · Enable keywordWrite
ga_enable_keyword_toolGoogle Ads: enable a paused keyword.
-
Google Ads · Keyword researchRead
ga_keyword_research_tool(read-only) Keyword research via Google Ads Keyword Planner (v24). When to use: the one tool for keyword discovery + validation. Call with action="explain" first for the workflow. Bundles: - action="ideas": discover keywords from seed_keywords and/or seed_page_url, or seed_site_url to crawl a whole domain. Returns search volume, competition, top-of-page bid range, and - new vs the older ga_gen_keyword_ideas_tool - Brand/Non-Brand concept grouping (KEYWORD_CONCEPT annotations), so you can split brand defence from prospecting in one pass. - action="historical": GenerateKeywordHistoricalMetrics for an explicit `keywords` list - volume, competition, close variants, 12-mo trend. Preconditions: customer_id is the 10-digit account id (dashes OK) and is REQUIRED for every action, including "explain". location_ids are Google geo TARGET IDS - numbers, never place names: 2840=US, 2124=Canada, 2826=UK, 2036=Australia, 2276=Germany, 2250=France, 2356=India (look others up with ga_geo_target_search_tool). language_code is a two-letter code (en, es, fr, de, nl, it, pt, ja, ko, zh, …); defaults are US/English. network ∈ GOOGLE_SEARCH, GOOGLE_SEARCH_AND_PARTNERS. seed_keywords / keywords accept a single string as well as a list. Every argument is validated before any Google call, and a bad one returns {"error": "…"} naming the accepted values - this tool never raises. Returns: dict with `ideas`/`keywords`, `markdown`. Bid values in micros. Gotchas: - Forecasting is NOT here - v24 simplified GenerateKeywordForecastMetrics (aligned to bidding strategy, secondary metrics dropped); use ga_gen_kw_forecast_tool. - For AI Max keywordless/broad-match expansion, see ga_ai_max_search_terms_tool. Example: ga_keyword_research_tool(customer_id="8704499358", action="ideas", seed_keywords=["escape room redmond"], seed_page_url="https://conundroom.com", location_ids=[2840]) Visualization: sortable keyword table grouped by Brand/Non-Brand concept.
-
Google Ads · Add keywordsWrite
ga_add_keywords_tool(write - immediate) Add positive keywords to an ad group in one batch. Applies on first call, no dry-run. When to use: building out an ad group after `ga_create_ad_group_tool`, or expanding from `ga_gen_keyword_ideas_tool` / `ga_keyword_research_tool` output. For NEGATIVE keywords use the `ga_add_negative_keyword*` family - this tool only adds biddable positives. Preconditions: customer_id is the 10-digit account id (dashes OK); ad_group_id from `ga_list_ad_groups_tool`. Each keywords item: {"text": "...", "match_type": "EXACT|PHRASE|BROAD", "cpc_bid": float?}. cpc_bid is in account-currency units. MCC accounts need login_customer_id. Returns: dict with keys [ok, count, resource_names] plus a `markdown` summary (match-type breakdown, avg CPC bid, next steps). Gotchas: - match_type defaults to BROAD when omitted - on a manual-CPC account that can match very loosely; pass it explicitly. - cpc_bid is ignored by smart-bidding strategies (tCPA/tROAS/Max conv); it only matters under manual CPC / enhanced CPC. - Keywords are created ENABLED and the whole batch is one mutate - a single invalid keyword fails the entire call. - Duplicate keyword+match_type in the same ad group errors. Example: ga_add_keywords_tool(customer_id="1234567890", ad_group_id="777333", keywords=[{"text": "escape room toronto", "match_type": "PHRASE", "cpc_bid": 1.50}]) Visualization: confirmation card with match-type breakdown.
-
Google Ads · Audit accountRead
ga_audit_account_toolRuns a full Google Ads account audit: bidding, ad copy, quality score and conversion tracking health, returning prioritized findings.
-
Google Ads · Quality score reviewRead
ga_quality_score_review_toolGoogle Ads: identify low-QS keywords and root cause. Finds keywords with quality score < threshold and clusters them by cause (expected CTR, landing page, ad relevance). Returns improve_qs actions with specific remediation hints. Visualization: table of low-QS keywords clustered by cause.
-
Setup · PlatformRead
connect_platform_toolStarts the connection flow for an advertising or analytics platform (Google Ads, Meta, GA4, Google Tag Manager, Search Console, TikTok, LinkedIn, Microsoft Advertising, Pinterest, X, YouTube) and returns the authorization link.
-
System · Health checkRead
health_check_toolChecks that AdvisorPPC and each connected advertising and analytics platform are responding, and reports any provider that is failing or degraded.
-
List Google connectionsRead
list_google_connections_toolLists the connected Google logins and which Google Ads, GA4, Tag Manager, Search Console, Merchant Center and YouTube accounts each one reaches.
-
Select Google connectionWrite
select_google_connection_toolChooses which connected Google login subsequent Google Ads, GA4, Tag Manager, Search Console, Merchant Center and YouTube calls run under.
-
Disconnect a platformWrite
disconnect_platform_tool(write - preview by default) Disconnect one platform from AdvisorPPC. When to use: the user wants AdvisorPPC to stop using a platform login. platform: google (every Google service), google_ads, ga4, gtm, search_console, youtube, gmc, business_profile, meta, threads, tiktok, linkedin, pinterest, reddit, x or bing. Returns: with confirm=false a preview of what would be removed and nothing changes; with confirm=true the stored grant is deleted and the platform's tools stop until it is connected again. Ad accounts and data at the provider are never touched. Visualization: confirmation card
-
Switch working accountWrite
switch_account_tool(write - preview by default) Choose the working account on a platform. When to use: the user wants a different Google Ads customer, GA4 property, Tag Manager container, Search Console site, YouTube channel, Meta ad account or TikTok advertiser, or a different Google login (platform="google_login", account_id = login email). Preconditions: the account must be reachable from the user's own connected login. Locked accounts are refused. Returns: with confirm=false the current and new account, the 3-lifetime-changes budget and the lock state; with confirm=true the new active account ids. Gotchas: - A different Google login, or a different TikTok advertiser, uses one of 3 lifetime changes on each platform that moves. - Google Ads uses one of the billing period's account slots. Visualization: confirmation card
-
Show settingsRead
get_settings_tool(read-only) Show the user's AdvisorPPC settings. Returns: per Google Ads account write mode (manual, auto, off), optimization on/off and audit frequency; the default and locked account per platform; whether account emails are on; and the lifetime account-change budget per platform. Visualization: settings card
-
Change a settingWrite
update_settings_tool(write - preview by default) Change one AdvisorPPC setting. setting is one of: - write_mode: value manual, auto or off; account_id = Google Ads id. Auto is a saved orchestration preference only: this connector applies no change from it in production. - optimization: value on or off; account_id = Google Ads id. - audit_frequency: value daily, every_2_days, weekly, biweekly or monthly; account_id = Google Ads id. - default_account: platform + account_id of an already selected account. - lock: platform, value on. Unlocking is done on the dashboard. - account_emails: value on or off. Returns: with confirm=false a preview and nothing changes; with confirm=true the saved value. Plan limits apply as on the dashboard. Visualization: confirmation card
-
Plan and billingRead
plan_tool(read-only) Show the plan, or hand over a billing link. action: - status: current plan, trial and what it includes. - upgrade: a secure Stripe checkout link for plan (google_ads, google_suite, ...). No card details are taken in chat. - manage: the billing page link. - cancel: confirm=false explains what ends and when; confirm=true returns the one-step cancel page link. This tool changes nothing itself; payment and cancellation finish on the linked page. Visualization: subscription card with link
-
Message supportWrite
support_tool(write - preview by default) Send a message to AdvisorPPC support. When to use: the user asks for help from a person, reports a problem, or asks to turn account emails back on. Returns: with confirm=false the exact message, recipient and reply address; with confirm=true it is emailed to support, who reply to the user's sign-in address. Up to 5 messages per day. Visualization: confirmation card
-
How to connect AdvisorPPC to each AI hostRead
connector_help_toolExplains how to add the AdvisorPPC connector to the app you are using, with the endpoint for each supported client (ChatGPT, Grok, Cursor, Gemini CLI and the desktop apps) and which tools that client sees.
-
Google Tag Manager · Audit containerRead
gtm_audit_container_toolGTM: audit container for issues (unfired tags, unused triggers, etc). Returns tag/trigger/variable counts and issues list. Visualization: editable table.
-
SEO · Keyword intent briefRead
seo_keyword_intent_brief_toolSEO/Keyword: Generate a brief for keyword intent classification. Takes seeds, returns prompt asking Claude to expand and classify by intent (COMMERCIAL, TRANSACTIONAL, INFORMATIONAL, NAVIGATIONAL). Visualization: brief card.
-
Cancel a scheduled removalWrite
advisor_cancel_removal(write, restores) Cancel one scheduled removal before it runs, and restore the item. When to use: the user changed their mind within the 90 minutes after the third written confirmation. Only the account that scheduled the removal can cancel it. If the item was paused for the removal and was enabled before, it is enabled again; otherwise its status is unchanged. Args: removal_id (from the removal's result or advisor_list_removals). Returns: {status: "cancelled", removal_id, target, restored, message} or {error: "not_cancellable"} when it already ran, was cancelled, or belongs to another account. Visualization: card
-
Google Ads · Auction insights - your impression share + where it leaksRead
ga_auction_insights_tool(read-only) Your account's auction competitiveness - impression share, abs-top, and whether you lose impressions to rank vs budget. When to use: "how competitive am I in the auction", "why am I not showing", "am I capped by budget or by rank/quality". This is the API-available slice of auction data. (Competitor ads / rival-domain auction insights are NOT in the Google Ads API.) For spend/clicks/ROAS use `ga_campaign_performance_tool`. IMPORTANT - what the API does NOT have: true Auction Insights (rival DOMAINS, overlap rate, position-above rate, outranking share) is UI/report- only, NOT in the Google Ads API. No tool can pull a competitor's domain- level auction data; this tool reports YOUR OWN side of the same auctions. Preconditions: a connected Google Ads account. `level` ∈ campaign / ad_group. `network` ∈ search / display (impression share only populates for Search/Shopping or Display serving). `date_range` is last_7_days / last_30_days / … or any GAQL DURING value. Returns: dict with `rows` (name, impression_share, abs_top_share, top_share, lost_rank, lost_budget - all fractions 0-1) and a `markdown` table that leads with the biggest budget-leak and rank-leak. Campaigns that didn't serve on the chosen network are dropped. Gotchas: - Lost-to-rank = ad quality × bid; lost-to-budget = capped spend. They tell you which lever to pull. They sum with impression share toward 100%. - Display network has no absolute-top / top variant (search-only fields). Example: ga_auction_insights_tool(customer_id="5411520149") ga_auction_insights_tool(customer_id="123", level="ad_group", network="search") Visualization: ranked impression-share table (IS% · abs-top · lost→rank · lost→budget).
-
Google Ads · Find wasted spendRead
ga_find_wasted_spend_toolFinds Google Ads keywords, placements and search terms burning budget with no conversions, so wasted PPC spend can be cut.
-
Apps · Gravity, Shield, Tracktor statusRead
advisor_apps_status_toolReports the status of AdvisorPPC's own services and platform integrations, including any outage or degraded provider.
-
Google Ads · Conversion tracking healthRead
ga_conv_tracking_health_toolGoogle Ads: audit conversion tracking health. Detects orphaned conversion actions (enabled but zero conversions), conversion-volume drift vs baseline, and no-conversion campaigns. Returns investigate_conv_drop actions. Visualization: table of conversion tracking issues.
-
Google Ads · Update ad-group default CPC bidWrite
ga_update_ad_group_cpc_tool(write - dry-run by default) Update an ad group's default max-CPC bid (in account currency, NOT micros). When to use: changing the fallback bid that applies to keywords without their own bid override. For per-keyword bid changes, use `ga_update_keyword_bid_tool`. For automated bidding (Target CPA / ROAS), use the relevant bid-strategy tools - this is for manual CPC only. Preconditions: pass currency units (e.g. `1.50` for $1.50), NOT micros. new_cpc_bid > 0. ad_group's bidding strategy must support manual CPC. Returns: dict with `dry_run`, `ad_group_id`, `old_cpc_bid`, `new_cpc_bid`, `resource_name` (on confirm). `markdown` confirmation card with old → new diff and a warning if the change is >30%. Gotchas: - Only affects keywords WITHOUT their own bid override. Keyword-level bids take precedence. - Big swings (>30%) are flagged in the dry-run card - review before applying. - Changes can take ~1h to affect serving. - Dry-run by default; pass `confirm=true` to apply. Example: ga_update_ad_group_cpc_tool(customer_id="1234567890", ad_group_id="888222", new_cpc_bid=2.50) Visualization: confirmation card with old → new diff.
-
Google Ads · Update campaign budgetWrite
ga_update_camp_budget_tool(write - immediate) Set a campaign's daily budget in account-currency units (NOT micros). Applies on first call. When to use: scaling spend up/down on one campaign, acting on pacing findings from `ga_budget_rebalance_tool`. For bid-strategy targets (tCPA / tROAS) use `ga_update_strat_target_tool` instead - budget and targets are different levers. Preconditions: customer_id is the 10-digit account id (dashes OK); campaign_id from `ga_list_campaigns_tool`. new_daily_budget is plain currency (e.g. 50.0 = $50/day). MCC accounts need login_customer_id. Returns: dict with keys [ok, campaign_id, new_daily_budget, old_daily_budget] plus a `markdown` card showing the change with a direction arrow. Gotchas: - Mutates the campaign's linked CampaignBudget resource - if several campaigns SHARE that budget, all of them change. Check before applying. - No dry-run on this legacy-family write; confirm the amount with the user first. - Google can spend up to 2x the daily budget on any single day (monthly cap = ~30.4x daily), so a raise can bite same-day. - Auto-logs to the client work log; >30% changes are flagged medium severity. Example: ga_update_camp_budget_tool(customer_id="1234567890", campaign_id="555111", new_daily_budget=75.0) Visualization: confirmation card with old → new delta.
-
Search AdvisorPPC operationsRead
advisor_search_tools(read-only) Find an AdvisorPPC operation by keyword. Use this when the operation you need is not in the tool list, then advisor_tool_help(name) for its parameters, then advisor_read or advisor_write to run it. Args: query (space-separated keywords, matched against operation name and description); limit (max results, default 15, capped at 100). Returns: {results: [{name, description, direction}], total_matched}. `direction` is "read" or "write" and tells you which runner takes it. `results` carries only operations this plan may see.
-
Explain an AdvisorPPC operationRead
advisor_tool_help(read-only) Full description and input schema for one operation. Call after advisor_search_tools and before running anything. Returns: {name, description, input_schema, direction, runner} where `runner` names the tool that will accept it -- advisor_read for a read-only operation, advisor_write for one that changes state. Or {error} if the name is unknown.
-
Read from an ad or analytics accountRead
advisor_read(read-only) Run one read-only AdvisorPPC operation by name. Use after advisor_search_tools / advisor_tool_help. This runner accepts ONLY operations annotated read-only; it reads accounts, reports and settings and never changes anything. For an operation that creates, updates, pauses, deletes or spends, use advisor_write instead. Args: tool (exact operation name); arguments (that operation's own parameters, as advisor_tool_help returns them). Returns: the operation's own result, or {error} on failure, on an unknown name, or when the named operation changes state.
-
Change an ad or analytics accountWrite
advisor_write(write, previews first) Run one state-changing AdvisorPPC operation by name. Use after advisor_search_tools / advisor_tool_help. This runner accepts ONLY operations that change something -- campaigns, budgets, bids, keywords, tags, posts, account settings. For a read-only lookup or report, use advisor_read instead. Without confirm=true nothing runs: the reply is a preview of the exact call. Show it to the user, and call again with confirm=true only after they approve. The operation's own safeguards still apply in full: entitlement and tier checks, the write-safety allowlist and spend caps. Args: tool (exact operation name); arguments (that operation's own parameters, as advisor_tool_help returns them); confirm (false previews, true applies). Returns: a preview with applied=false, or the operation's own result once confirmed, or {error} on failure, on an unknown name, or when the named operation is read-only.
Google Analytics 4
5 tools · 5 read
-
Google Analytics 4 · List propertiesRead
ga4_list_properties_toolLists Google Analytics 4 properties accessible to the signed-in identity. Takes no inputs. Returns property IDs, display names, time zones, currencies, and account context.
-
Google Analytics 4 · Run reportRead
ga4_run_report_toolRuns a Google Analytics 4 report. Accepts property_id, metrics, dimensions, date_ranges, and limit. Returns dimension headers, metric headers, and bounded report rows.
-
Google Analytics 4 · Traffic by sourceRead
ga4_traffic_by_source_toolReports traffic acquisition by source. Accepts property_id and days. Returns source and medium rows with users, sessions, and conversions.
-
Google Analytics 4 · RealtimeRead
ga4_realtime_toolReports current Google Analytics 4 activity. Accepts property_id and dimensions. Returns bounded realtime rows with active-user metrics.
-
Google Analytics 4 · List key eventsRead
ga4_list_key_events_toolLists configured Google Analytics 4 key events for property_id. Returns event names, resource IDs, counting methods, and value settings.
Google Tag Manager
4 tools · 4 read
-
Google Tag Manager · List accountsRead
gtm_list_accounts_toolLists Google Tag Manager accounts accessible to the signed-in identity. Takes no inputs. Returns account IDs, names, and resource paths.
-
Google Tag Manager · List containersRead
gtm_list_containers_toolLists Google Tag Manager containers for account_id. Returns container IDs, names, usage contexts, domains, and resource paths.
-
Google Tag Manager · List workspacesRead
gtm_list_workspaces_toolLists workspaces for account_id and container_id. Returns workspace IDs, names, descriptions, and resource paths.
-
Google Tag Manager · List tagsRead
gtm_list_tags_toolLists tags for account_id, container_id, and workspace_id. Returns tag IDs, names, types, trigger references, and paused state.
Google Search Console
5 tools · 5 read
-
Search Console · List sitesRead
sc_list_sites_toolLists Search Console sites accessible to the signed-in identity. Takes no inputs. Returns site URLs and permission levels.
-
Search Console · Query performanceRead
sc_query_performance_toolQueries Search Console performance. Accepts site_url, days, dimensions, and row_limit. Returns bounded rows with clicks, impressions, CTR, and average position.
-
Search Console · Top queriesRead
sc_top_queries_toolLists leading Search Console queries. Accepts site_url, days, and row_limit. Returns query rows with clicks, impressions, CTR, and position.
-
Search Console · Top pagesRead
sc_top_pages_toolLists leading Search Console pages. Accepts site_url, days, and row_limit. Returns page rows with clicks, impressions, CTR, and position.
-
Search Console · Inspect urlRead
sc_inspect_url_toolInspects a URL in Search Console. Accepts inspection_url, site_url, and language_code. Returns indexing, coverage, canonical, crawl, and mobile usability details supplied by Google.
YouTube
4 tools · 4 read
-
YouTube · List my channelsRead
yt_list_my_channels_toolLists YouTube channels owned by the signed-in identity. Takes no inputs. Returns channel IDs, names, descriptions, thumbnails, and statistics.
-
YouTube · Channel statsRead
yt_channel_stats_toolReports YouTube channel performance. Accepts channel_id and days. Returns views, watch time, subscribers, likes, comments, and shares.
-
YouTube · Top videosRead
yt_top_videos_toolReports leading YouTube videos. Accepts channel_id, days, and limit. Returns video rows with views, watch time, subscribers, and engagement.
-
YouTube · Traffic sourcesRead
yt_traffic_sources_toolReports YouTube traffic sources. Accepts channel_id and days. Returns source rows with views and estimated watch minutes.
TikTok Ads
3 tools · 3 read
-
TikTok Ads · List campaignsRead
tt_list_campaigns_toolLists TikTok Ads campaigns with objective, status and budget.
-
TikTok Ads · Account performanceRead
tt_account_performance_toolReports TikTok Ads account performance: spend, impressions, conversions and cost per result.
-
TikTok Ads · Campaign performanceRead
tt_campaign_performance_toolTikTok Ads: Campaign-level performance with normalized metrics. Returns spend, impressions, clicks, CTR, CPC, conversions, ROAS per campaign. Dimensions: stat_time_day, stat_time_week, stat_time_month. Visualization: line chart.
Ready to try them? Start with the connection steps.