connect_platform
ChatGPTConnect a platform to PaidSync. Returns a link for the user to open and sign in on PaidSync; nothing is entered in chat. On this connection it only returns that link and changes nothing in any ad account, property or container.
get_account_summary
ChatGPTGet account name, currency, timezone, and status for the active Google Ads account
get_ad_performance
ChatGPTGet ad-level performance breakdown: see which individual ads are performing best with impressions, clicks, CTR, CPC, conversions
get_campaign_performance
ChatGPTCampaign performance breakdown sorted by spend: impressions, clicks, CTR, CPC, cost, conversions, budget, and status per campaign.
get_keyword_performance
ChatGPTKeyword performance report: top 100 keywords by cost or conversions with spend, clicks, impressions, quality score, max CPC bid. Sort with sort_by (cost or conversions). CTR and CPC are derivable from the returned clicks, impressions, and cost.
get_ms_keyword_performance
ChatGPTKeyword level delivery, quality score components, bids and the full device, network and match-type breakdown (Microsoft KeywordPerformanceReport). THE TRAP UNIQUE TO THIS REPORT: it is the only one in this set that publishes a MaxRows element, and MaxRows makes MICROSOFT truncate the report server side. A total computed over a truncated report is NOT an account total. So when max_rows is sent, totals_complete is false, the message says the totals cover the returned rows only, and truncated_by_microsoft is true when the row count equals max_rows and 'unknown' otherwise, because Microsoft returns no truncation flag of its own. When max_rows is not sent, totals_complete is true. Quality score components come back only when include_quality_score is on, and are null rather than 0 when Microsoft returns a blank cell: a quality score of 0 is not a real score. keyword text is advertiser-written and is bounded and named in untrusted_fields. Read-only.
get_ms_performance
ChatGPTGet Microsoft Advertising (Bing) campaign performance: spend, clicks, impressions, conversions, revenue, CTR, average CPC, ROAS. Uses the Reporting API async submit-poll-download flow. Runs on the active Microsoft Ads account, or on account_id (with its customer_id) for this call only. Args: date_range (default last_30_days; also last_7_days, this_month, last_month, last_3_months, or last_N_days), start_date/end_date (YYYY-MM-DD) for a custom range, campaign_id to scope to one campaign, aggregation 'Summary' (default, one row per campaign) or 'Daily' (per-day breakdown).
get_performance_summary
ChatGPTGet account-level performance metrics: impressions, clicks, CTR, CPC, conversions, cost, ROAS for a date range
get_search_terms_report
ChatGPTSearch terms report: queries that triggered your ads with per-query spend, clicks, and conversions to spot wasted spend and add negatives. Top 500 terms ranked by sort_by (cost by default, or clicks, impressions, conversions), ranked by Google before the cap, so a top-N is exact.
get_wasted_spend_report
ChatGPTGet a consolidated wasted spend report showing all sources of waste: zero-conversion keywords, costly search terms with no results, low Quality Score keywords draining budget, and ads with zero clicks. Returns total recoverable spend with specific items to fix.
list_accounts
ChatGPTList all Google Ads accounts across every connected Google identity. Walks identities + their MCCs recursively (including nested MCCs). Returns a flat list with connected_via (which Google account surfaced each account), access_path (direct or under_mcc), via_mcc (parent MCC if applicable), and is_manager. When summarizing for the user, group accounts by connected_via so they can see which Google account has access to what. NOTE: this tool is Google Ads only. For other platforms use their own list tool and bind with set_active_account using the platform parameter. An empty result here means no Google Ads identity is connected; it does NOT mean Google is required to use Meta, LinkedIn, or any other platform.
list_campaigns
ChatGPTList all campaigns with status, budget, type, impressions, clicks, cost, conversions and all conversions. Set include_removed=true to also see permanently removed campaigns (RMF M.110 read-back).
list_ms_accounts
ChatGPTList all Microsoft Advertising accounts accessible across connected identities. Returns account_id, customer_id, name, number, status. customer_id is required for set_active_account (platform "microsoft") when writing.
list_ms_campaigns
ChatGPTList campaigns for a Microsoft Advertising account. Defaults to the active account; pass account_id + customer_id (from list_ms_accounts) to list a specific account without set_active_account (platform "microsoft").
select_mcc
ChatGPT[Legacy] Pin an MCC as a fallback login-customer-id for the rare case set_active_account resolution doesn't cover. Not needed for the normal flow — set_active_account captures per-account identity + MCC routing automatically. Validates the MCC is reachable through at least one of your connected identities before storing.
set_active_account
ChatGPTBind the active account to operate on. Defaults to Google Ads when platform is omitted (back-compat). To work on a NON-Google platform, pass platform (e.g. 'meta_ads', 'linkedin', 'tiktok', 'snapchat', 'reddit', 'pinterest', 'microsoft', 'openai', 'x', 'merchant') together with that platform's account_id. NO Google Ads connection is required and each platform binds independently. Google-only options: provide mcc_id for a specific MCC, or direct_access=true for no MCC.
set_active_microsoft_account
ChatGPTSelect which Microsoft Advertising account this app's reads use. Pass customer_id (from list_ms_accounts) so campaign writes have the required CustomerId header. Required before any write.