- Brand
- AdPlug
- Category
- Marketing
- Primary Subcategory
- Ad Campaign Analytics & Reporting
Integration details
Description
AdPlug connects Google Ads, Meta Ads (Facebook Ads and Instagram Ads), LinkedIn Ads, Microsoft Advertising (Microsoft Ads / Bing Ads), and Reddit Ads to ChatGPT and Codex. Analyze live advertising data, audit PPC accounts, compare campaign performance, research keywords and targeting, and prepare changes for your approval. Built for PPC specialists, B2B marketers, and agencies managing multiple client accounts. Use AdPlug for: - Google Ads: discover accounts and MCC hierarchies, report on campaigns and conversions, audit search terms and negative keywords, research keyword ideas, and run custom GAQL reports. - Meta Ads / Facebook Ads / Instagram Ads: discover ad accounts, Facebook Pages, and linked Instagram accounts; analyze campaign, ad set, ad, placement, and conversion performance; research targeting; diagnose delivery; preview supported changes; and search Meta's Ad Library subject to its API coverage and permissions. - LinkedIn Ads: analyze campaigns, creatives, conversions, and audience performance; research targeting; inspect account entities; and search LinkedIn's public Ad Library. - Microsoft Advertising / Bing Ads: review campaign, ad group, keyword, search-query, audience, and conversion reports; research keywords and targeting; and inspect campaigns and account settings. - Reddit Ads: review campaign and ad-group performance, research subreddit and interest targeting, inspect ads, and diagnose delivery and conversion-tracking problems. - Cross-channel reporting: compare spend, clicks, conversions, CPC, CPA, CPL, and ROAS where the selected platforms provide them. Keep account currencies, date ranges, and conversion definitions explicit. For supported write actions, preview campaign, budget, bid, ad, targeting, conversion, or negative-keyword changes before applying them. Changes require your authorization and enabled write access in AdPlug. Available tools, data, and actions depend on the platform, connected accounts, permissions, and account entitlements. Related AdPlug connectors: HubSpot CRM for contacts, companies, deals, pipelines, and follow-up work; Google Search Console for SEO queries, pages, indexing, and sitemaps. HubSpot and Google Search Console use separate AdPlug MCP connections and are not included in this ads-only connection. Connect your AdPlug account and authorize the advertising accounts you want to use. AdPlug is an independent product and is not affiliated with or endorsed by OpenAI or the platforms it connects to.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Ad Campaign Analytics & Reporting
- Secondary Subcategories
- None listed
- Brand
- AdPlug
- Access
- Account required
- First tracked
- 2026-11-11
- Tool count
- 53
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Not discoverable in ChatGPT yet
ChatGPT now suggests Plugins on its own when they match a user's request, but not every Plugin is being surfaced yet.We haven’t seen AdPlug suggested yet. Sign up and we’ll track it, and your Discoverability Score will appear here once ChatGPT starts surfacing it.
What discovery looks like

Get alerts for AdPlug
Get updates when AdPlug’s Discoverability Score or category rank changes.
Competing in ChatGPT Ad Campaign Analytics & Reporting
View Category53 tools agents can invoke
Download account entities as bulk rows — the fast way to read a whole account. entity_types defaults to Campaigns, AdGroups, Ads, Keywords; other values include NegativeKeywords, AdGroupCriterions, CampaignTargetCriterions, Budgets, Audiences, AdExtensions (see Microsoft's DownloadEntity list). Returns up to 5000 rows of Microsoft's bulk CSV schema (Type column tells each row's entity). Use the rows' Id/Parent Id values with microsoft_ads_bulk_upload for mass edits. (Microsoft Ads tool.)
microsoft_ads_bulk_download
Mass-edit via a bulk CSV upload to the Microsoft Advertising Bulk API (bulk file schema, Format Version 6.0: https://learn.microsoft.com/en-us/advertising/bulk-service/bulk-file-schema). csv_content must be a complete bulk file: a header row, then a 'Format Version' row with Name=6.0, then one row per entity change (Type + Id + Parent Id + changed columns; Status=Deleted removes an entity). Get current rows and the schema from microsoft_ads_bulk_download. Returns Microsoft's result rows — rows with an Error column failed, the rest applied. Each entity row counts as one edit (rows Microsoft rejects are not charged). This EDITS the account; preview the CSV with the user first. (Microsoft Ads tool.)
microsoft_ads_bulk_upload
Check which ad platforms (Google Ads, LinkedIn Ads, Microsoft Ads, Meta Ads, Reddit Ads) are connected to this AdPlug account. IMPORTANT: Call this tool FIRST before using any other AdPlug tools. It tells you which platforms the user has connected so you can guide them to connect missing ones before attempting platform-specific operations. Also reports write_access per platform (read_write or read_only). read_only ('View only' in the dashboard) is a team setting: write tools are hidden and any write call is rejected, so do not attempt changes.
adplug_get_status
Explains why Meta ads are not delivering (Meta Ads tool). Answers "why isn't my ad running". Checks, in the order that actually blocks delivery: 1. the ad account itself (disabled, unpaid balance, spend cap reached) 2. each ad's effective_status, which reflects parents, so a live ad under a paused campaign is correctly reported as blocked by the campaign 3. Meta's own issues_info for review rejections and policy problems Pass entity_id to diagnose one campaign, ad set or ad; omit it to sweep the whole account. Every finding names the entity and the concrete next step.
meta_ads_diagnose
Explains why Reddit ads are not delivering or not optimizing (Reddit Ads tool). Answers "why isn't my Reddit ad running" and "why aren't conversions coming in", checking in the order that actually blocks delivery: 1. the ad account (Reddit's approval state, suspension reason) 2. billing (no servable funding instrument, card declined, credit used up) 3. every ad's effective status, which reflects its parents, with Reddit's rejection reason for rejected ads 4. tracking: ad groups optimizing for a conversion event the pixel has not received in 7 days (they can't optimize and may barely deliver) Pass campaign_id to look at one campaign; omit it to sweep the account. Every finding names the object and the next step.
reddit_ads_diagnose
Execute a previewed negative keyword addition (Google Ads write tool). You MUST call google_ads_preview_add_negatives first and pass its preview_id. Executing the same preview_id again returns the first result; it never applies twice. Args: customer_id: Google Ads customer ID (must match the preview). preview_id: The preview_id returned by google_ads_preview_add_negatives.
google_ads_execute_add_negatives
Execute a previewed Google Ads mutation (Google Ads write tool). You MUST call google_ads_preview_mutation first and pass its preview_id. Executing the same preview_id again returns the first result; a preview never applies twice. Args: customer_id: The Google Ads customer ID (must match the preview). preview_id: The preview_id returned by google_ads_preview_mutation.
google_ads_execute_mutation
Execute a LinkedIn Ads write operation (LinkedIn Ads write tool). Use linkedin_ads_preview_mutation first to validate and preview the operation. Args: operation: The operation to execute (same as preview). params: Operation-specific parameters (same as preview).
linkedin_ads_execute_mutation
Execute a Meta Ads write that was previewed with meta_ads_preview_mutation (Meta Ads tool). Only call this after previewing the same operation and params, and after the user has confirmed. Creates land PAUSED; nothing spends until activated. Takes the same operation and params as the preview.
meta_ads_execute_mutation
Execute a Microsoft Ads change previewed with microsoft_ads_preview_mutation. Pass the same operation and params as the preview. Results include a partial_errors array when Microsoft rejected some items — always check it. (Microsoft Ads tool.)
microsoft_ads_execute_mutation
Execute a Reddit Ads change previewed with reddit_ads_preview_mutation (Reddit Ads tool). Pass the same operation and params as the preview, only after the user confirmed. Created campaigns, ad groups and ads are PAUSED unless status=ACTIVE.
reddit_ads_execute_mutation
Get the Google Ads Query Language (GAQL) syntax guide. Returns the full GAQL grammar, clause reference (SELECT, FROM, WHERE, ORDER BY, LIMIT, PARAMETERS), operator list, date functions, and rules. Call this before writing any raw GAQL query with google_ads_query.
google_ads_gaql_doc
Generate Responsive Search Ad copy with Microsoft's generative AI. Drafts headlines and descriptions from the landing page(s) in final_urls. Optional prompt describes the product/service to focus on; optional text_tone adjusts the writing tone. Nothing is created in the account — review the output, then use microsoft_ads_preview_mutation operation=create_responsive_search_ad to create the ad. (Microsoft Ads tool.)
microsoft_ads_generate_ad_copy
Gets details for a single LinkedIn Ads entity (LinkedIn Ads tool). entity_type options: - "campaign": Full campaign config (targeting, budget, format, schedule, etc.). - "campaign_group": Campaign group details. - "creative": Creative details with content. Pass raw=true to ALSO get the unflattened creative + underlying post JSON (raw_creative, raw_post) so you can verify the exact Destination URL (contentLandingPage), Headline (content.media.title) and CTA (contentCallToActionLabel) the way Campaign Manager reads them — not just the flattened ad_copy view. - "targeting_audience": Targeting audience template with criteria. - "saved_audience": Matched/DMP audience details (name, type, sourcePlatform, destinations[] with status and audienceSize, and `destinationSegmentId` — the `urn:li:adSegment:...` URN you'd use in targeting criteria). Pass the dmpSegment numeric ID as entity_id. - "lead_form_responses": Lead form submission data. entity_id = form_id (optional, pass "all" for all forms). Args: entity_type: What to get. One of: campaign, campaign_group, creative, targeting_audience, saved_audience, lead_form_responses. entity_id: The entity ID. For lead_form_responses, pass the form_id or "all". account_id: The LinkedIn Ad Account ID (required for campaign, campaign_group, creative, lead_form_responses). limit: Max responses for lead_form_responses. Default: 100. raw: For entity_type='creative', include the raw creative + raw post JSON. Default: false.
linkedin_ads_get
Gets full detail for one Meta Ads entity, or renders a visual ad preview (Meta Ads tool). entity_type: campaign | adset | ad | creative | custom_audience | catalog | ad_preview ad_preview renders the ad exactly as it appears on a placement and returns an iframe URL. Set ad_format to the placement you want, e.g. DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, INSTAGRAM_STORY, INSTAGRAM_REELS, FACEBOOK_STORY_MOBILE, FACEBOOK_REELS_MOBILE. Meta expires these preview URLs after 24 hours, so render on demand and never cache or store the link. account_id is only needed for money formatting on campaign/adset detail.
meta_ads_get
Get full details for a single Microsoft Ads entity. entity_type must be one of: campaign, ad_group, ad, keyword. ad_group requires campaign_id; ad and keyword require ad_group_id. customer_id is auto-resolved from account_id when omitted. (Microsoft Ads tool.)
microsoft_ads_get
Get Microsoft Ads performance data for any level of the account. report_type must be one of: account, campaign, daily, ad_group, ad, keyword, search_query, geographic, user_location, placement, age_gender, professional_demographics (LinkedIn company / industry / job function), share_of_voice (auction insights), audience, conversion, product_dimension, product_partition, video, asset_group, change_history (who changed what and when: user, tool, old and new value; kept 6 months, about an hour behind). Dates are YYYY-MM-DD. Optional campaign_ids narrows campaign-scoped reports. compare_previous_period=true also runs the preceding period of the same length and adds previous values and % change per row and in total. max_rows (default 500, up to 5000) caps the rows returned; total_rows is always the full count. customer_id is auto-resolved from account_id when omitted. Runs Microsoft's asynchronous report flow internally; expect a few seconds. (Microsoft Ads tool.)
microsoft_ads_performance
Full details of one Reddit Ads object (Reddit Ads tool). entity_type: campaign, ad_group (complete targeting), ad, post, custom_audience, saved_audience, lead_gen_form (questions), ad_account (settings, attribution, account-level excluded communities and keywords), business, profile, product_catalog, product_set, creative_asset, pixel_last_fired (when each conversion event last reached the pixel: the quickest tracking health check). Money fields from Reddit are in microcurrency (1,000,000 = 1.00); campaigns, ad groups and ads also carry them formatted.
reddit_ads_get
Get performance summary across multiple Google Ads accounts in ONE call. Returns per-account: name, id, currency, impressions, clicks, cost (formatted with currency symbol), conversions, all_conversions, conversion_value, CTR, CPC, cost_per_conversion. Automatically skips MCC/manager accounts. Queries all accounts server-side. Args: date_range: GAQL literal — "TODAY", "YESTERDAY", "LAST_7_DAYS", "LAST_14_DAYS", "LAST_30_DAYS", "LAST_60_DAYS", "LAST_90_DAYS", "LAST_180_DAYS", "LAST_365_DAYS", "THIS_MONTH", "LAST_MONTH", "THIS_QUARTER", "LAST_QUARTER", "THIS_YEAR", "LAST_YEAR", "LAST_BUSINESS_WEEK", "THIS_WEEK_MON_TODAY", "LAST_WEEK_MON_SUN" — or custom "YYYY-MM-DD,YYYY-MM-DD". account_ids: Optional list of specific account IDs. If not specified, queries ALL non-manager accounts (including MCC children). compare: If true, also returns the prior equivalent period for comparison. LAST_7_DAYS compares to the 7 days before that, etc.
google_ads_account_performance
Get performance for a Google Ads account by campaign, ad, keyword or bid strategy, paginated. No GAQL needed. level="campaign" (default), per campaign: name, status, type, bidding_strategy_type, portfolio_bidding_strategy_id, target_cpa / target_roas (the campaign's own targets, when set), impressions, clicks, cost (formatted), conversions, all_conversions, CTR, CPC, cost_per_conversion, search_impression_share, lost_is_budget, lost_is_rank, conversion_value; video and Demand Gen campaigns add video_views, view_rate, average_cpv and watched_to_end (share of views played to the end). level="ad", per ad: campaign, ad_group, ad_id, resource_id ('{adGroupId}~{adId}', the id pause_ad / enable_ad / remove_ad take), type, status, final_url, headlines_preview (responsive search ads), impressions, clicks, cost, conversions, CTR, CPC, cost_per_conversion. level="keyword", per keyword: campaign, ad_group, keyword, match_type, status, resource_id ('{adGroupId}~{criterionId}', the id pause_keyword / enable_keyword / remove_keyword take), quality_score, first_page_cpc, first_position_cpc, top_of_page_cpc, impressions, clicks, cost, conversions, CTR, CPC, cost_per_conversion. level="product" (Shopping), per product: item_id, title, brand, campaign, impressions, clicks, cost, conversions, conversion_value. level="product_group" (Standard Shopping), every product group in one page: ad group, path (e.g. 'all products > brand = Nike'), type (SUBDIVISION | UNIT), bid ('excluded', an amount or 'ad group default'), resource_id (what update_keyword_bid takes), impressions, clicks, cost, conversions, conversion_value. level="bidding_strategy": every portfolio bid strategy in one page: name, type, status, campaign_count, impressions, clicks, cost, average_cpc, conversions, cost_per_conversion. Removed items are left out. Sorted by `sort_by` (default cost descending). Returns up to `page_size` rows (default 200, max 1000) plus `next_page_token` for the next page. The user usually wants the full picture for analysis — keep calling with the returned token until next_page_token is null. Args: customer_id: Google Ads customer ID (digits only). date_range: "LAST_7_DAYS", "LAST_30_DAYS", "LAST_90_DAYS", "THIS_MONTH", "LAST_MONTH", "LAST_24_MONTHS", custom "YYYY-MM-DD,YYYY-MM-DD", etc. See google_ads_account_performance for the full literal list. login_customer_id: MCC account ID if querying a child account. Auto-detected if omitted. campaign_status: Filter by the campaign's status, "ENABLED" or "PAUSED", or None for all (campaign, ad and keyword levels). page_size: Rows per page (1-1000, default 200). page_token: Opaque cursor from a prior response. Omit on first call. sort_by: Sort metric: "cost", "conversions", "clicks", "impressions". level: "campaign" (default), "ad", "keyword", "product", "product_group" or "bidding_strategy". campaign_id: Optional campaign ID, to report on one campaign (campaign, ad and keyword levels).
google_ads_campaign_performance
Get conversion performance broken down by conversion action. Use this when the user asks "what conversion actions are firing" or wants per-action CPA. Handles the GAQL segmentation quirks automatically — you don't need to worry about PROHIBITED_METRIC_IN_SELECT_OR_WHERE_CLAUSE. Returns per conversion action: name, conversions, conversion value, plus the account-level cost total so you can compute CPA per action. Bounded by the number of conversion actions in the account — typically small, no pagination needed. Args: customer_id: Google Ads customer ID (digits only). date_range: "LAST_7_DAYS", "LAST_30_DAYS", "LAST_90_DAYS", "THIS_MONTH", "LAST_MONTH", "LAST_24_MONTHS", custom "YYYY-MM-DD,YYYY-MM-DD", etc. See google_ads_account_performance for the full literal list. login_customer_id: Optional MCC account ID. Auto-detected if omitted. campaign_id: Optional campaign ID to filter.
google_ads_conversion_performance
Get daily performance trends for a Google Ads account. Use this for time-series analysis — day-over-day cost, conversions, CTR, CPC trends. For one-shot per-campaign aggregates use google_ads_campaign_performance instead. For cross-account spend overview use google_ads_account_performance. Returns per-day: date, impressions, clicks, cost (formatted), conversions, all_conversions, CTR, CPC. Bounded by date range — typically <365 rows, no pagination needed. Optionally filter to a single campaign. Args: customer_id: Google Ads customer ID (digits only). date_range: "LAST_7_DAYS", "LAST_30_DAYS", "LAST_90_DAYS", "THIS_MONTH", "LAST_MONTH", "LAST_24_MONTHS", custom "YYYY-MM-DD,YYYY-MM-DD", etc. See google_ads_account_performance for the full literal list. login_customer_id: Optional MCC account ID. Auto-detected if omitted. campaign_id: Optional campaign ID to filter to a single campaign.
google_ads_daily_trends
Generate keyword ideas using Google Ads Keyword Planner, or look up keywords' own search volumes. mode="ideas" (default) returns keyword ideas with avg_monthly_searches, competition and bid estimates. Provide either `keywords` (seed terms), `url` (page to mine), or both. Capped at 1000 ideas per call to stay within MCP response limits. The Keyword Planner API does not support pagination — narrow the seeds or geo/language filters if you need more granularity. mode="historical" returns Keyword Planner's historical metrics for exactly the `keywords` given (up to 1,000, no new ideas): month-by-month searches, the average, competition and bid estimates, and the close variants Google counted with each keyword. Monthly searches: monthly=True adds them to ideas (always on in historical mode). The response lists `months` once (e.g. ["2025-10", ...]) and each keyword's `monthly_searches` in that order; null means Google has no figure for that month. Google's default range is the last 12 months; from_month / to_month ('YYYY-MM') choose another, up to 4 years back. Args: customer_id: Google Ads customer ID (digits only). keywords: Seed keywords (ideas) or the keywords to look up (historical). url: URL to generate keyword ideas from (ideas mode). language: Language code ('da'), name ('Danish') or criterion ID. English when omitted. geo_targets: Country codes (['DK']), country, region or city names (['Denmark', 'Bavaria', 'Chisinau']) or criterion IDs. United States when omitted. The response's `targeting` says what was used; an input Google doesn't know is an error, never a silent default. login_customer_id: Optional MCC account ID. Auto-detected if omitted. mode: "ideas" (default) or "historical". monthly: Month-by-month searches for each idea. from_month: First month of the range, 'YYYY-MM'. to_month: Last month of the range, 'YYYY-MM'.
google_ads_keyword_ideas
List Google Ads Recommendations for an account: Google's own suggestions, such as raising a budget, adding keywords, setting a target CPA or adding sitelinks, each with Google's estimate of its impact and the details of the change. Present them to the user as Google Ads Recommendations (Google's suggestions, not AdPlug's). Every one listed can be applied or dismissed: google_ads_preview_mutation with operation="apply_recommendation" or "dismiss_recommendation" and resource_id=<id>, then google_ads_execute_mutation. Applying uses Google's suggested values unless params.parameters changes them (for example a different budget). Returns per recommendation: id, resource_name, type, campaign_id, ad_group_id, campaign_ids (the campaigns a budget recommendation covers), dismissed, impact (base and potential impressions, clicks, cost, conversions, conversions_value) and details (the type's own fields, e.g. the recommended budget or keyword). Up to `page_size` per call (default 50, max 1000), fewer when the response would pass 40K characters, plus next_page_token. Args: customer_id: Google Ads customer ID (digits only). login_customer_id: Optional MCC account ID. Auto-detected if omitted. campaign_id: Optional campaign ID, to list only that campaign's recommendations. types: Optional recommendation types, e.g. ["CAMPAIGN_BUDGET", "KEYWORD", "SITELINK_ASSET"]. include_dismissed: Also list recommendations dismissed earlier (default false). page_size: Recommendations per page (1-1000, default 50). page_token: Opaque cursor from a prior response. Omit on first call.
google_ads_recommendations
Get search term report for a Google Ads account, paginated. Returns search terms sorted by cost (highest spend first), one row per search term and ad group, with match_type (the match type of the keyword that triggered the ad, close variants such as NEAR_EXACT and NEAR_PHRASE included; a term matched in more than one way lists them all, most spend first, plus by_match_type with each one's impressions, clicks, cost and conversions), impressions, clicks, cost (formatted), conversions, CTR, CPC. min_cost_micros applies to the row's total. dynamic_search_ads=True returns Google's Dynamic Search Ads search term report instead: each search term with the headline Google wrote and the landing page it chose, plus impressions, clicks, cost, conversions and conversion value. Returns up to `page_size` rows per call (default 200, max 1000) plus `next_page_token` for the next page. The user usually wants the full picture for analysis — keep calling with the returned token until next_page_token is null. Args: customer_id: Google Ads customer ID (digits only). date_range: "LAST_7_DAYS", "LAST_30_DAYS", "THIS_MONTH", etc. login_customer_id: Optional MCC account ID. Auto-detected if omitted. campaign_id: Optional campaign ID to filter. page_size: Rows per page (1-1000, default 200). page_token: Opaque cursor from a prior response. Omit on first call. min_cost_micros: Optional minimum cost filter in micros (e.g. 1000000 = $1). dynamic_search_ads: True for the Dynamic Search Ads search terms (headline and landing page).
google_ads_search_terms
Search LinkedIn's public Ad Library for ads from any advertiser (LinkedIn Ads tool). Returns ads run by ANY LinkedIn advertiser, not just the user's own accounts. Covers ads served since 2023-06-01, retained 1 year past the last impression. Use this for competitor research, brand monitoring, creative-format benchmarking, geographic-targeting analysis, and detecting whether a company is currently advertising on LinkedIn. For analytics on the USER'S own accounts, use linkedin_ads_performance instead. Ad copy, CTA text, and image/video assets are NOT in the API response — direct the user to the returned ad_url for those. mode options: - "summary": Returns total count + up to 3 sample ad URLs only. Use for "is X advertising?" / "how many ads is X running?" without burning context on full element bodies. - "standard": Returns formatted elements (epoch ms -> ISO 8601 UTC, snake_case keys, structured targeting facets). The default. - "raw": Returns LinkedIn's response body unchanged. Escape hatch when the formatter loses something or the schema evolves. Args: keyword: Full-text search across ad text and metadata. At least one of keyword or advertiser is required. Best signal for "find ads about X" queries. advertiser: Advertiser identifier - accepts a URN (urn:li:organization:1234), a LinkedIn company URL with a numeric ID (https://www.linkedin.com/company/1234), or a bare numeric ID (1234). Slug URLs (https://www.linkedin.com/company/microsoft) are not supported - pass the numeric ID instead. NOTE: LinkedIn's advertiser filter is sparse - many active advertisers return total=0 even when they clearly run ads (visible via keyword search). If advertiser-only returns 0, fall back to a keyword search of the company name. count: Page size, 1-25 (LinkedIn caps page size at 25). Default 10. start: Pagination offset. Default 0. mode: One of "summary", "standard", "raw". Default "standard".
linkedin_ad_library_search
Unified analytics tool — returns performance data for any LinkedIn Ads report type (LinkedIn Ads tool). One tool for all performance reporting. The report_type parameter selects what data to return. report_type options: - "campaign": Per-campaign metrics (spend, impressions, clicks, CTR, CPC, conversions). Returns campaign names, IDs, status. - "creative": Per-creative metrics with engagement breakdown (likes, comments, shares) and video metrics. Returns creative type (DOCUMENT, SINGLE_IMAGE, VIDEO, CAROUSEL). - "daily": Day-by-day performance trends. - "conversion": Per-conversion-action breakdown (total conversions, post-click, post-view, cost per conversion). - "lead_gen": Lead generation metrics per campaign (leads, form opens, qualified leads, cost per lead). - "demographics": Audience demographics breakdown. Requires demographic_type: MEMBER_JOB_FUNCTION, MEMBER_SENIORITY, MEMBER_INDUSTRY, MEMBER_COMPANY_SIZE, MEMBER_JOB_TITLE, MEMBER_COMPANY, MEMBER_COUNTRY_V2, MEMBER_REGION_V2. - "reach": Audience reach and frequency (unique reach, impressions, frequency, penetration). Max 92-day range. Args: account_id: The LinkedIn Ad Account ID. start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. report_type: One of: campaign, creative, daily, conversion, lead_gen, demographics, reach. campaign_ids: Optional list of campaign IDs to filter. campaign_id: Optional single campaign ID to filter (convenience alias for campaign_ids). demographic_type: Required when report_type is "demographics". E.g. MEMBER_JOB_FUNCTION, MEMBER_SENIORITY.
linkedin_ads_performance
Targeting lookup tool — search entities, resolve URNs, or estimate audience size (LinkedIn Ads tool). action options: - "search": Typeahead search for targeting entities — best for open-ended free-text facets (titles, employers, skills, industries, schools, groups, degrees, fieldsOfStudy, interests). Requires: query, facet. Facet name uses LinkedIn's URN form *without* the urn:li:adTargetingFacet: prefix (e.g. facet="titles", not "jobTitles"). Closed-set facets (seniorities, jobFunctions, staffCountRanges, ageRanges, genders, revenue, yearsOfExperienceRanges, interfaceLocales, etc.) are not typeahead-searchable — use entity_type=targeting_facets and consult Microsoft Learn's "Targeting Criteria Facet URNs" reference for valid URN values. Examples: • staffCountRanges → "urn:li:staffCountRange:(MIN,MAX)" compound URNs, e.g. (2,10), (501,1000), (5001,10000), (10001,2147483647 for "10K+"). • seniorities, jobFunctions, etc. → "urn:li:<facet>:<code>" with a fixed enum. Matched audiences (urn:li:adTargetingFacet:audienceMatchingSegments) are also NOT typeahead-searchable — LinkedIn exposes them with finder=[$UNKNOWN]. Use linkedin_ads_list entity_type=saved_audiences with `name_contains` instead. - "resolve_urns": Resolve targeting URNs to {urn, facetUrn, name, ...}. Requires: urns (array of URN strings). Optional: account_id (enables the destinationSegmentUrn → dmpSegment reverse lookup, which is what recovers names for adSegment URNs that were pulled from a campaign's targetingCriteria — those URNs use the destination segment id, NOT the top-level dmpSegment id, so /dmpSegments/{id} alone would 404). For urn:li:adSegment:* URNs the resolver tries (1) /dmpSegments/{id}, (2) when account_id is set, the dmpSegments listing's destinations[].destinationSegmentId, and (3) the bare adTargetingEntities finder. URNs that confirm targetable via (3) but lack a name land in `targetable_unnamed`. Anything truly unresolvable lands in `unresolved`. - "audience_count": Get estimated audience size for targeting criteria. Requires: account_id, targeting_criteria (object with include/exclude facets). Args: action: One of: search, resolve_urns, audience_count. query: Search query (for action=search). E.g. "marketing manager", "Google". facet: Targeting facet name (for action=search), without the urn:li:adTargetingFacet: prefix. E.g. titles, employers, skills, industries, schools. urns: Array of targeting URNs (for action=resolve_urns). account_id: LinkedIn Ad Account ID (for action=audience_count). targeting_criteria: Targeting criteria object (for action=audience_count).
linkedin_ads_targeting_lookup
List all Google Ads accounts with names, types, currency, and MCC hierarchy. Call this FIRST before any other Google Ads tool — it discovers every accessible account, identifies which are MCCs, and maps the parent/child structure. Other tools auto-resolve login_customer_id from this list, so calling it once at the start prevents USER_PERMISSION_DENIED errors on child-account queries. Returns per account: id, name, is_manager (true for MCCs), currency, status, parent_id (if under an MCC). Never silently drops accounts — inaccessible ones come back with `details unavailable` rather than being filtered out. When the user connected more than one Google account, each ad account names the google_account it goes through, and google_accounts gives each one's status.
google_ads_list_accounts
Lists all LinkedIn Ad Accounts accessible to the authenticated user (LinkedIn Ads tool). Returns each account with: id, name, currency, status, and type. Use this first to discover available LinkedIn Ad accounts.
linkedin_ads_list_accounts
Lists LinkedIn Ads entities of any type (LinkedIn Ads tool). IMPORTANT — LinkedIn UI naming vs API naming: - LinkedIn UI "Campaigns" = API "campaign_groups" (use entity_type="campaign_groups") - LinkedIn UI "Ad sets" = API "campaigns" (use entity_type="campaigns") - LinkedIn UI "Ads" = API "creatives" (use entity_type="creatives") When a user asks about "campaigns", they usually mean campaign_groups. entity_type options: - "campaign_groups": Lists campaigns (LinkedIn UI name). Supports status filter: ACTIVE, PAUSED, ARCHIVED, DRAFT. Supports include_performance with start_date/end_date. - "campaigns": Lists ad sets (LinkedIn UI name). Supports status filter and campaign_group_id to show ad sets under a specific campaign. - "creatives": Lists ads (LinkedIn UI name) with format detection (DOCUMENT, VIDEO, SINGLE_IMAGE, CAROUSEL, etc.). Supports campaign_ids filter and include_content. IMPORTANT: When status="ACTIVE", auto-filters to only include ads from ACTIVE ad sets — so you get truly serving ads. - "conversions": Lists conversion tracking rules. Status filter = enabled_only (pass status="enabled"). - "campaign_conversions": Lists conversion-rule ↔ campaign associations. Requires campaign_ids. Returns one row per (campaign_id, conversion_id) pairing. - "lead_forms": Lists lead generation forms. Supports status filter: DRAFT, PUBLISHED, ARCHIVED. - "saved_audiences": Lists matched/DMP audiences. Paginates fully across the account (no 10-row cap). Returns the LINKEDIN destination's status as `status` (typical values: READY, BUILDING, PROCESSING, ARCHIVED, FAILED) plus `destinationSegmentId` (the `urn:li:adSegment:...` URN to use in targeting criteria). Supports `name_contains` for client-side substring search (matched audiences are NOT typeahead-searchable via the LinkedIn API — list and filter is the supported pattern). - "targeting_audiences": Lists saved targeting audience templates. Supports name_contains. - "targeting_facets": Lists all available targeting facets/dimensions. No account_id needed. Args: entity_type: What to list. One of: campaign_groups, campaigns, creatives, conversions, lead_forms, saved_audiences, targeting_audiences, targeting_facets. account_id: The LinkedIn Ad Account ID (required for most entity types, not needed for targeting_facets). status: Optional status filter (meaning varies by entity type). For creatives with status="ACTIVE", cascades through campaign status. campaign_ids: Optional campaign ID filter (for creatives/ads). campaign_group_id: Optional campaign group ID filter (for campaigns/ad sets — show ad sets under a specific campaign). include_content: Include raw content details for creatives. Default: false. include_performance: Include performance metrics for campaign_groups (requires start_date/end_date). Default: false. start_date: Start date for performance data (YYYY-MM-DD). end_date: End date for performance data (YYYY-MM-DD). limit: Maximum number of results to return. Default: 100. name_contains: Case-insensitive substring filter on entity name (saved_audiences, targeting_audiences).
linkedin_ads_list
Lists Meta ad accounts, Facebook Pages, and linked Instagram accounts (Meta Ads tool). Call this first. Ad creation needs three IDs that live in different places: the ad account (billing + campaigns), the Page (every ad posts as a Page), and the Instagram account (required for delivery on Instagram placements). This returns all three in one call, plus each account's currency, status, and spend so far. Notes surfaced per Page: - instagram_account: null means no Instagram account could be resolved for this Page. Either none is linked, or AdPlug lacks Instagram permission — Meta returns the same empty result for both. Creatives need an Instagram account ID to deliver on Instagram placements, so treat null as "Facebook-only until the user confirms the Page's Instagram link". - leadgen_tos_accepted: false means lead-form ads will be rejected until an admin accepts Meta's Lead Ads terms. - spend_cap: null means no cap is set, not a cap of zero.
meta_ads_list_accounts
Lists Meta Ads entities of any type (Meta Ads tool). entity_type: campaigns | adsets | ads | creatives | custom_audiences | images | videos | rules | lead_forms | posts | catalogs | pixels | datasets | custom_conversions | saved_audiences | recommendations | activity_logs | instagram_accounts | product_sets | products | catalog_diagnostics posts lists a Page's own published posts with their text, date, link and picture (parent_id = the Page id). Each post id can run as an ad as it is: create_creative with object_story_id, then create_ad. Only posts with is_eligible_for_promotion true can be advertised. instagram_accounts returns the Instagram identities this ad account can use on a creative. An empty list means no Instagram account is connected to THIS ad account (owning one at business level is not enough), so ads from it will be Facebook-only until one is connected in Business Settings. activity_logs is the account change history: who changed what and when, which answers "what changed last week" and doubles as an audit trail. product_sets, products and catalog_diagnostics need parent_id set to a catalog id (list catalogs first). Filters: - status: keep only rows whose effective_status matches, e.g. ACTIVE, PAUSED, CAMPAIGN_PAUSED, ADSET_PAUSED, PENDING_REVIEW, DISAPPROVED. NOTE the difference between `status` (the entity's own setting) and `effective_status` (whether it can actually deliver given its parents). An ad with status=ACTIVE under a paused campaign is NOT running. - parent_id: restrict adsets to a campaign, or ads to an ad set; lead_forms and posts need it set to a Facebook Page id - name_contains: case-insensitive substring match on name Budgets come back formatted in the account currency. A missing budget field means none is set at that level (often because the parent campaign holds it).
meta_ads_list
List all Microsoft Advertising accounts the connected user can access. Returns each account's id, name, account number, parent customer (manager) id, and currency. Use the account_id and customer_id on later Microsoft Ads tool calls. (Microsoft Ads tool.)
microsoft_ads_list_accounts
List Microsoft Ads entities of a given type. entity_type must be one of: campaigns, ad_groups, ads, keywords, budgets, negative_keyword_lists, negative_keyword_list_items, asset_groups, audiences, uet_tags, conversion_goals, campaign_criterions, ad_group_criterions, ad_extensions, bid_strategies, website_exclusions, website_exclusion_lists, website_exclusion_list_items, account_settings (identity, tracking/auto-tagging settings, automated extensions and auto-apply switches), recommendations (Microsoft's own suggestions, with ids for apply/dismiss), labels, experiments, account_negative_keywords, audience_signals (Performance Max audience groups), media (uploaded images, with media ids for ads and asset groups), import_jobs and import_results (Microsoft's scheduled Google Ads imports set up in the Microsoft Advertising UI, and how each run went), seasonality_adjustments, data_exclusions and conversion_value_rules (smart bidding controls). Parent-id requirements: ad_groups/asset_groups/campaign_criterions need campaign_id; ads/keywords/ad_group_criterions need ad_group_id; negative_keyword_list_items needs shared_list_id. asset_groups only exist on PerformanceMax campaigns and include search themes and the attached audience_signal_id. audiences lists the account's own audiences; pass audience_type="InMarket" (with name_contains, e.g. "SEO") to search Microsoft's in-market segments. name_contains filters any list by name (or keyword text). website_exclusions is one campaign's (or with ad_group_id, one ad group's) own excluded sites; website_exclusion_lists is the account-level kind: the manager account's shared website exclusion lists, each with used_by_this_account, and website_exclusion_list_items (shared_list_id) gives a list's sites. Criterion lists show targeting (profile/location/ device/schedule/audience) with criterion ids for remove_targeting_criterion. customer_id is auto-resolved from account_id when omitted. (Microsoft Ads tool.)
microsoft_ads_list
Lists the Reddit businesses and ad accounts this user can reach (Reddit Ads tool). Call this first. Returns every business the connected Reddit user belongs to, each with its ad accounts (id, name, currency, time zone, approval state), the profiles ads can post as (ad posts are published by a Reddit profile, so creating an ad needs a profile_id), and its pixels (Reddit requires a conversion_pixel_id on every ad group). Every other Reddit Ads tool takes an account_id from here, including ad accounts another business shared with this one as a partner.
reddit_ads_list_accounts
Lists Reddit Ads objects of one type (Reddit Ads tool). entity_type and the id it needs: - account_id: campaigns, ad_groups (filter with campaign_id), ads (filter with campaign_id or ad_group_id; shows rejection_reason and preview_url), custom_audiences, saved_audiences, pixels, funding_instruments (billing: is it servable, credit limit, card status), lead_gen_forms, profiles, apps, change_history (who changed what and when; start_time/end_time ISO 8601) - profile_id: posts (the ad posts a profile published, with headline, media, destination and call to action), creative_assets (the profile's asset library) - business_id: product_catalogs - catalog_id: product_sets, products status filters campaigns, ad groups and ads by configured or effective status (e.g. ACTIVE, PAUSED, PENDING_APPROVAL, REJECTED). name_contains is a case-insensitive substring match. Budgets and bids are shown in the account currency.
reddit_ads_list
Look up Microsoft Ads targeting entities and keyword ideas. action="profiles": search LinkedIn Profile Targeting dimensions. Set profile_type to company, industry, or job_function and query to a name substring (query optional for the small industry/job_function lists — omit it to list them all). Returns {id, name} pairs whose id feeds add_profile_targeting. Companies are searched by name, so query needs at least 3 characters for profile_type=company. action="keyword_ideas": keyword research. Pass keywords (list of seed terms) and optionally location_id (default 190 = United States). Returns ideas with monthly search volumes, competition, and suggested bids. action="search_volume": monthly search counts per keyword for the last `months` (1-24) months. keywords, optional countries (codes, default ["US"]) and language (default English). action="traffic_estimate": weekly clicks / impressions / cost / CPC ranges for keywords at a bid. keywords, optional match_types (Exact, Phrase, Broad; default Phrase), max_cpc (default 2), daily_budget, location_id, language. Microsoft forecasts English, French and German in US, UK, CA, AU, FR, DE. action="bid_estimate": the bid needed for a position. keywords, optional match_types, target_position (MainLine1 = absolute top, MainLine = top, FirstPage), location_id, language. Returns suggested bid and weekly traffic. action="keywords_for_url": keyword suggestions for a landing page. url, optional language, limit. action="locations": find Microsoft location ids by name for targeting (add_location_targets). query (e.g. "London" or "California"), optional location_type (Country, State, City, MetroArea, County, PostalCode, Neighborhood). Each match includes its Google Ads geo id too. (Microsoft Ads tool.)
microsoft_ads_targeting_lookup
Meta Ads performance and insights — spend, delivery, and conversions (Meta Ads tool). Set `report_type` to choose the pivot: - account: one row for the whole ad account - campaign / adset / ad: one row per entity (default: campaign) - creative: per-ad, same as `ad`, for creative comparisons - daily: day-by-day rows per campaign; daily_account for account totals - demographic: age + gender breakdown - placement: Facebook vs Instagram, feed vs reels vs stories - device: by impression device - country: by country Date range: pass `date_preset` (today, yesterday, last_7d, last_14d, last_30d, last_90d, this_month, last_month, maximum, ...) or an explicit `start_date` + `end_date` as YYYY-MM-DD, which override the preset. Other parameters: - entity_ids: restrict to specific campaign/ad set/ad IDs matching the level - breakdowns: raw Graph breakdown string, overrides the report_type default - attribution_windows: defaults to 7d_click + 1d_view. Meta retired 7d_view, 28d_view, and 28d_click in January 2026; passing them returns no data, so they are stripped and reported back in `notes`. - include_zero_spend: off by default, so rows that never spent are excluded
meta_ads_performance
Finds Meta targeting options, or estimates the audience size of a targeting spec (Meta Ads tool). Two modes. 1. Search (default): pass `query` plus a `search_type` of interests, interest_suggestions, behaviors, demographics, life_events, industries, income, family_statuses, geo, locales, employers, job_titles, schools, or study_fields. Use search_type="placements" (no query) to list every valid placement platform and position for ad set targeting. Returns the exact ids to put in a targeting spec — always use the returned id, never a guessed name, because Meta matches on id. 2. Audience estimate: pass `account_id` and a `targeting_spec` (no query) to get Meta's reach estimate for that audience before creating an ad set. Useful for catching targeting that is far too narrow or too broad. Interests get consolidated by Meta over time; an id that has been retired will be rejected at ad set creation, so re-search rather than reusing old ids.
meta_ads_targeting_search
Preview adding negative keywords BEFORE executing (Google Ads write tool). Always call this first, then pass the returned preview_id to google_ads_execute_add_negatives. Args: customer_id: Google Ads customer ID (digits only). keywords: List of negative keywords to add (e.g. ["free", "cheap", "diy"]). match_type: EXACT, PHRASE, or BROAD (default EXACT). target_type: Where to add negatives — "campaign" or "shared_set". target_id: Campaign ID (if target_type="campaign") or Shared Set ID (if target_type="shared_set"). login_customer_id: Optional MCC account ID. Auto-detected if omitted.
google_ads_preview_add_negatives
Preview a Google Ads change BEFORE executing it (Google Ads write tool). Always call this first, then pass the returned preview_id to google_ads_execute_mutation. BULK/BATCH — for many changes at once (a new campaign structure, dozens of sitelinks), pass operation="batch" with operations=[{operation, resource_id?, params?}, ...] to apply them all in ONE preview/execute pair (max 100). Steps run in order; a later step reuses an EARLIER step's result via "$N.field" (named field, e.g. "$0.asset_id") or "$N" (that step's primary id): operations=[ {"operation": "create_sitelink", "params": {"link_text": "Pricing", "final_url": "https://x/p"}}, {"operation": "link_asset_to_campaign", "params": {"campaign_id": "123", "asset_id": "$0.asset_id", "field_type": "SITELINK"}}, ] A reference can also be one part of a compound id: "123~$0.ad_id", or "$0.ad_group_ad_id" for the ad a create_rsa step made. Each step is a separate API call costing one edit. Stops at the first failure by default, reporting which step failed and which never ran; pass params={"continue_on_error": true} to run independent steps regardless. For the full list of operations and their params, call: google_ads_preview_mutation(operation="help") or scoped to a category: google_ads_preview_mutation(operation="help", params={"category": "entity"}) Available categories: entity (campaign/adgroup/ad/keyword/budget/bidding), targeting (geo/language single + bulk, location options presence vs interest, bid adjustments, ad schedule), asset (RSAs, extensions, image/text/YouTube-video assets, and asset links: link, pause/enable, unlink), asset_group (PMax asset groups + signals + listing filters), settings, shared_set, conversion (conversion actions + campaign conversion-goal config), label, negatives (placement/topic/audience/youtube/mobile-app/content-label/PMax-brand exclusions), audience (Custom Audience CRUD + positive audience attachment to ad groups), user_list (remarketing lists: Customer Match + website-visitor rule-based + logical/combined), demand_gen (create Demand Gen ads — video/multi-asset/carousel/product), shopping (Standard Shopping: Shopping settings, inventory filter, product ad, product groups), dsa (Dynamic Search Ads: campaign DSA setting, page targets and exclusions, expanded DSAs). Operations: Status mutations (no params required): pause_campaign, enable_campaign, pause_adgroup, enable_adgroup, pause_keyword, enable_keyword, pause_ad, enable_ad Removals (no params required, irreversible): remove_campaign, remove_adgroup, remove_keyword, remove_ad Bid adjustments (targeting category): set_device_bid_modifier, set_location_bid_modifier, set_demographic_bid_modifier, update_bid_modifier, update_ad_schedule. The value is Google's multiplier: 1.2 = +20%, 0.8 = -20%, 1.0 = no adjustment, 0.1 to 10.0 (and 0 turns a device off). The preview shows each adjustment's value now and after. Budget: update_budget — params: {"budget_amount": <float, account currency>} resource_id is the CampaignBudget ID (not the campaign ID). create_budget (a shared budget), set_campaign_budget (move a campaign onto a budget), remove_budget; create_campaign takes params.budget_id to use one. Bidding strategy (campaign-level, standard or portfolio strategies): update_campaign_bidding — params: {"strategy_type": "TARGET_CPA"|"TARGET_ROAS"| "MAXIMIZE_CONVERSIONS"|"MAXIMIZE_CONVERSION_VALUE"| "MANUAL_CPC"|"MAXIMIZE_CLICKS"|"TARGET_IMPRESSION_SHARE"| "PORTFOLIO", ...strategy-specific fields} - TARGET_CPA: target_cpa (required); Google runs it as Maximize conversions with that target - TARGET_ROAS: target_roas (required, e.g. 2.5 = 250%); Google runs it as Maximize conversion value with that target (Standard Shopping: Google's own Target ROAS strategy). Bid limits (cpc_bid_ceiling / floor) need a portfolio strategy - MAXIMIZE_CONVERSIONS: target_cpa (optional cap) - MAXIMIZE_CONVERSION_VALUE: target_roas (optional target) - MANUAL_CPC: enhanced_cpc_enabled (bool, default false) - MAXIMIZE_CLICKS: cpc_bid_ceiling (required, > 0; GAQL reads it as campaign.target_spend.cpc_bid_ceiling_micros) - TARGET_IMPRESSION_SHARE: location, location_fraction_micros, cpc_bid_ceiling (all required) - PORTFOLIO: bidding_strategy_id (required) attaches a portfolio strategy made with create_bidding_strategy; any other strategy_type detaches it again Args: customer_id: The Google Ads customer ID (digits only). operation: See list above. resource_id: The resource ID (compound for keywords/ads, e.g. "{adGroupId}~{criterionId}"). params: Operation-specific parameters. login_customer_id: Optional MCC account ID.
google_ads_preview_mutation
Preview a LinkedIn Ads write operation before executing it (LinkedIn Ads tool). Shows what API call will be made, validates parameters, and returns the payload for confirmation. Use linkedin_ads_execute_mutation to actually execute it. Available operations: - Campaign Groups: create_campaign_group, update_campaign_group, delete_campaign_group - Campaigns: create_campaign, update_campaign, delete_campaign - Creatives: create_creative, update_creative, delete_creative - Asset uploads: upload_image, upload_video, upload_document - Inline ads (one-shot create): create_inline_ad (ad_format: SINGLE_IMAGE/SINGLE_VIDEO/DOCUMENT/CAROUSEL/TEXT/SPOTLIGHT/MESSAGE/EVENT/TLA) - Lead Forms: create_lead_form, update_lead_form, delete_lead_form - Targeting: create_targeting_audience, update_targeting_audience, delete_targeting_audience, apply_targeting_audience - Conversions: create_conversion_rule, associate_conversion, dissociate_conversion - Audiences: create_saved_audience, add_audience_members Args: operation: The operation to preview. One of the operations listed above. params: Operation-specific parameters as a dict. Call with operation="help" to see required params for each operation.
linkedin_ads_preview_mutation
Preview a Meta Ads write before executing it (Meta Ads tool). This is a real dry run, not a description: it sends the change to Meta with validate_only, so Meta performs the same server-side validation it would on a live write and reports what would fail, while creating and changing nothing. For updates it also fetches the live entity and returns a field-by-field diff with percentage changes on budgets. Always call this before meta_ads_execute_mutation, show the user the summary and any warnings, and only execute once they confirm. Operations: create_campaign, update_campaign, create_adset, update_adset, create_creative, create_ad, update_ad, update_status, set_spend_cap, upload_image, create_custom_audience, create_lookalike, delete_entity. Call with operation="help" for the full parameter spec of every operation. Money is in the account currency's minor unit (cents), so 5000 means 50.00. Everything created is PAUSED and spends nothing until you explicitly activate it.
meta_ads_preview_mutation
Preview a Microsoft Ads change without executing it. Shows the exact REST call that microsoft_ads_execute_mutation would make. Call with operation="help" for the catalog (params={"category": ...} or {"operation": ...} for full specs). operation="batch" with params={"operations": [{operation, params}, ...]} previews up to 100 ops that run in order and can reference ids created by earlier steps ("$0", "$1.id"). Always preview before executing. (Microsoft Ads tool.)
microsoft_ads_preview_mutation
Preview a Reddit Ads change before executing it (Reddit Ads tool). Shows the exact API call, checks it against the live account (parent campaign budget mode, the object being changed) and, for updates, a before/after diff with budget and bid changes in the account currency. Reddit has no dry-run mode, so nothing is sent to Reddit as a write here. Operations by category (operation="help" for the catalog, params={"operation": NAME} for one spec): campaign (create_campaign, update_campaign), ad_group (create_ad_group, update_ad_group with add_targeting/remove_targeting merges), ad (create_post, update_post, create_ad with an inline post, update_ad, upload_creative_asset), status (update_status: pause, activate, archive), brand_safety (update_account_exclusions), audience (create_custom_audience, add_audience_users, remove_audience_users, delete_custom_audience, create_saved_audience, update_saved_audience), lead_gen (create_lead_gen_form), conversion (send_conversion_events). operation="batch" runs many in order with "$N" references to ids created by earlier steps. Budgets and bids are plain currency (50 = 50.00). Everything created is PAUSED unless status=ACTIVE. Show the user the preview and execute only after they confirm.
reddit_ads_preview_mutation
Reddit Ads performance for one ad account, at any level or breakdown (Reddit Ads tool). report_type: - account, campaign, ad_group, ad: totals per entity, with reach and frequency - daily, daily_campaign, hourly (hourly covers at most 7 days) - community (subreddit), keyword, interest: where and to whom ads delivered - country, region, metro, placement (FEED vs COMMENTS_PAGE), device (OS), gender, language - carousel_card, video (view quartiles and viewable views), conversions (purchases, leads, sign-ups, add-to-cart, page visits, view-content, click-through vs view-through, purchase value and ROAS, plus Reddit lead form leads) Dates default to the last 30 full days in the ad account's time zone; or pass start_date/end_date (YYYY-MM-DD, inclusive). Filter with campaign_ids, ad_group_ids or ad_ids (one level at a time). split_by_campaign=true adds the campaign to a community, keyword, interest, geography, placement, device, gender, language or daily report. conversion_events reports custom conversion events by their exact name. compare_previous_period=true adds the preceding period of equal length and the change per metric. Money is formatted in the account currency; rates are computed from the raw counts.
reddit_ads_performance
Research Reddit targeting before building or changing ad groups (Reddit Ads tool). action: - search_communities (query): subreddits matching a term, with subscriber counts - suggest_communities (keywords and/or website_url): Reddit's recommended communities for a topic or a landing page - communities (names): exact subreddits by name, to get ids and sizes - keyword_suggestions (keywords as seeds): related keywords with monthly views, Reddit's keyword planner for conversation targeting - validate_keywords (keywords): which keywords Reddit allows under its brand safety rules - interests (query optional): Reddit's interest categories - geolocations (country, city, postal_code): targetable location ids - validate_geolocations (geolocation_ids, or names as city names) - languages, devices, carriers, third_party_audiences - audience_estimate (account_id, params: objective, targeting, budget, budget_type 'daily'|'lifetime', bid_type, bid_strategy, bid_value, optimization_goal): audience size and delivery ranges (impressions, clicks, conversions) before spending - bid_suggestion (account_id, params: bid_type, targeting, objective, optimization_goal, budget): Reddit's suggested bid range targeting uses the ad group shape: communities, keywords, interests, geolocations (ids), excluded_* lists, devices, platforms, locations (FEED, COMMENTS_PAGE), gender, languages, custom_audience_ids, expand_targeting. Budgets and bids are plain currency (50 = 50.00).
reddit_ads_targeting_lookup
Get Google Ads API reporting view documentation. Without a view name: returns an overview of all ~167 available reporting views (campaign, ad_group, keyword_view, search_term_view, etc.). With a view name: returns the full field schema for that view, including every attribute, segment, and metric with data types, enum values, and whether each field is filterable/selectable/sortable. Args: view: The reporting view name (e.g. "campaign", "ad_group", "search_term_view"). Omit for the overview of all views.
google_ads_reporting_view_doc
Execute a custom GAQL query against a Google Ads account through the Google Ads API, paginated. GAQL is the Google Ads Query Language: https://developers.google.com/google-ads/api/docs/query/overview Power-user tool for queries the convenience tools don't cover. Prefer google_ads_account_performance, google_ads_campaign_performance, google_ads_daily_trends, google_ads_conversion_performance, or google_ads_search_terms when they fit — they return cleaner shaped data. Use this for ad-group/keyword/asset/criterion-level queries, custom segmentation, or anything not covered by those. Prerequisites: if you don't know the GAQL syntax, call google_ads_gaql_doc first. For field names of a specific view, call google_ads_reporting_view_doc. Sensitive billing/access resources are not queryable here. Returns up to `page_size` rows (default 200, max 1000) plus `next_page_token` for the next page, and fewer rows when wide rows would make the response too big (over 40K characters); the token then continues from the first row left out. The user usually wants the full picture for analysis — keep calling with the returned token until next_page_token is null. MCC login_customer_id is auto-detected if omitted. When paginating, pass the SAME query, customer_id and compact back with page_token from the prior response. Args: query: The GAQL query to execute. Besides Google's own DURING literals, DURING LAST_60_DAYS / LAST_90_DAYS / LAST_180_DAYS / LAST_365_DAYS work (rewritten to a date range ending yesterday). customer_id: The Google Ads customer ID (digits only). login_customer_id: Optional MCC account ID. Auto-detected if omitted. page_size: Rows per page (1-1000, default 200). page_token: Opaque cursor from a prior response. Omit on first call. compact: True returns "columns" (the field names, once) and "rows" (lists of values in that order) instead of "data" (one object per row repeating every field name). About a quarter of the size, so use it for long or wide pulls such as keyword_view or search_term_view.
google_ads_query
AdPlug ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve AdPlug's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are AdPlug alternatives on ChatGPT?
As of 2026-11-11, AdPlug competes with Ad Account Health Check, Ad Reporting by PaidSync.ai, Ad Superpowers, Adalysis, AdBeacon, AdKit - Ads Manager, Adlane, AdLiftr and 82 more in ChatGPT Ad Campaign Analytics & Reporting, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.


