Tool explorer
Every tool your AI can call
You never call these yourself. Ask in plain English and your assistant picks the right tool. 45 tools backed by 167 expert rules, listed straight from the MarStack server (version 0.1.0).
45 tools
marstack_statusFreeMarStack status
Confirms MarStack is connected and shows your plan, credits and connected platforms.
Ask: “Is MarStack connected?”
No setup neededRead-onlyInputs and full description
No inputs.
What the AI reads: Check that MarStack is connected and see what this server can do right now: version, environment, available tools, audit rules and connected platforms.
inspect_page_tracking5 creditsInspect page tracking in a real browser
Loads a page in a real browser and records every tag, pixel, hit and cookie that fires. Hits are blocked, so your analytics stay clean.
Ask: “Does the purchase event fire on my thank-you page?”
Needs: Any websiteRead-onlyInputs and full description
Input Type What it is url string Page to inspect, for example https://example.com/checkout/thank-you wait_seconds? number Extra seconds to wait after load for late tags (default 4) consent? none | accept | reject After recording the first load, click the consent banner's Accept or Reject button and record what fires next (default none) What the AI reads: Use this when the user asks to check, test or debug the tracking, analytics, pixels or consent on a website or a specific page. Prefer it over fetching the page: page source cannot show what actually fires. Loads the page in a real browser as a first-time visitor and reports every tracking tag and hit that fires: GA4, GTM, Google Ads, Meta, TikTok, LinkedIn, Microsoft Ads, Pinterest and more. Returns tables of checks, cookies (category, purpose, duration) and tracking requests, plus screenshots of the page. Flags problems such as duplicate page views, PII in hits, cookies before consent, zero-revenue purchases and Meta events without event_id. Hits are captured and blocked, so inspection never adds visits to the site's analytics. Use it to prove whether a tag actually fires, for example on a thank-you page. Costs 5 credits.
audit_gtm_public_container10 creditsAudit a public GTM container
Audits the published GTM container behind any website, no access needed: tags, consent settings, measurement IDs and risky Custom HTML.
Ask: “What tags does example.com run in GTM?”
Needs: Any websiteRead-onlyInputs and full description
Input Type What it is url? string A page on the site, for example https://example.com container_id? string A GTM container ID, for example GTM-ABC1234 What the AI reads: Use this when the user asks to audit or review a website's Google Tag Manager setup, or asks what tags a site runs. Prefer it over fetching gtm.js yourself: it decodes the container and applies expert audit rules. Audits the live, published GTM container of any website without account access. Give a page URL (MarStack loads it and audits every GTM container it finds, using real dataLayer and network evidence) or a container ID such as GTM-ABC1234. Returns tables of findings and tags (type, trigger, consent), measurement IDs, Consent Mode state and risky Custom HTML; with a URL it also lists cookies and tracking requests and attaches a screenshot. For a container the user can access through their Google connection, prefer audit_gtm_container (real tag names and the full 20-check GTM audit). Costs 10 credits.
check_consent_compliance10 creditsCheck cookie consent compliance
Clicks Reject and Accept on the cookie banner in two fresh visits and compares what fires, with a compliance verdict and screenshots.
Ask: “Is my cookie banner GDPR compliant?”
Needs: Any websiteRead-onlyInputs and full description
Input Type What it is url string Page to check, usually the home page, for example https://example.com What the AI reads: Use this when the user asks whether a website is GDPR / cookie-consent compliant, whether its consent banner works, or what happens when a visitor clicks Accept or Reject. Makes two fresh visits in a real browser: one clicks the banner's Reject button, one clicks Accept. Compares what fires before any choice, after Reject and after Accept (ad pixels, GA4 consent state, tracking cookies) and returns a verdict (compliant or not, and whether Accept actually turns tracking on), each failed check with its fix, tables of cookies (category, purpose) and tracking requests for every stage, and screenshots of the banner and each choice. Recognises OneTrust, Cookiebot, CookieYes, Termly, Osano, iubenda, Usercentrics, Didomi, Quantcast, Complianz, TrustArc and others. Costs 10 credits.
list_ga4_propertiesFreeList GA4 properties
Lists every GA4 account and property your connected Google accounts can open, with property IDs.
Ask: “Which GA4 properties can I access?”
Needs: Google connectionRead-onlyInputs and full description
No inputs.
What the AI reads: Use this when the user asks which GA4 properties or accounts they can access, or needs a property ID before an audit. Lists every Google Analytics 4 account and property the connected Google account can open, with numeric property IDs. Free, read-only.
audit_ga4_property10 creditsAudit a GA4 property
89 expert checks on your GA4 property: data quality, events, ecommerce, links, audiences, PII and consent, scored out of 100 and ranked by impact.
Ask: “Audit my GA4 property 504011059”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is property_id string Numeric GA4 property ID, for example 504011059 (Admin, Property settings, Property details). Not the G- measurement ID. skip_site? boolean Skip loading the website (faster; the tag and consent checks are then marked not checked) What the AI reads: Use this when the user asks to audit, review or health-check their Google Analytics 4 (GA4) property or account setup. Needs the user's GA4 connection, not just a website. Runs MarStack's 89 GA4 expert checks on the last 30 days of data and the property settings: data collection and retention, data quality (domains, bots, referrals, UTMs, (not set)), events and key events, ecommerce and revenue, links (Google Ads, Search Console, BigQuery), audiences, PII, consent, plus a live load of the site. Returns a score out of 100, every failed and warning check ranked by impact with the fix, and a Report ID for a branded report. Read-only: nothing in GA4 is changed. Give the numeric property ID (GA4 Admin, Property details), not the G- measurement ID. Costs 10 credits.
get_ga4_performance1 creditGet GA4 performance
Sessions, users, engagement, key events and revenue by channel, campaign, landing page, device or country, compared with the previous period, with data-quality warnings.
Ask: “Which channel brought the most leads this month?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is property_id string Numeric GA4 property ID, for example 504011059 by? channel | source_medium | campaign | landing_page | device | country | date Break down by this (default channel) days? string Period in full days ending yesterday (default 28), compared with the period before key_event? string Count only this key event, for example generate_lead or purchase (default: all key events) limit? integer Rows to show (default 15) What the AI reads: Use this for business questions about website performance in Google Analytics 4: traffic, users, engagement, key events (conversions) and revenue, by channel, source/medium, campaign, landing page, device, country or day, compared with the previous period of the same length. Good first call for "how is the site doing", "which channel brings leads", "why did conversions drop". For any other combination of dimensions and metrics use run_ga4_report. Read-only. Costs 1 credit.
run_ga4_report1 creditRun a GA4 report
Any GA4 report: your choice of dimensions, metrics, dates and filters, checked against your property so a wrong name gets close matches instead of an error.
Ask: “Show form_start events by landing page for October”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is property_id string Numeric GA4 property ID dimensions array GA4 dimension API names (or UI names), for example ["sessionSourceMedium"]. Can be empty for totals only. metrics array GA4 metric API names, for example ["sessions","keyEvents"] start_date? string YYYY-MM-DD, yesterday or NdaysAgo (default 28daysAgo) end_date? string YYYY-MM-DD, today or yesterday (default yesterday) compare_previous? boolean Also show the previous period of the same length (needs YYYY-MM-DD dates) filters? array Dimension filters, all must match, for example [{"field":"sessionDefaultChannelGroup","match":"exact","value":"Paid Social"}] order_by? string Metric to sort by, highest first (default the first metric) limit? integer Rows to show (default 25) What the AI reads: Use this for any Google Analytics 4 question get_ga4_performance does not cover: any dimensions and metrics (including custom definitions and keyEvents:<event_name>), any date range, filters, and an optional comparison with the previous period. Names are checked against the property's own metadata; an unknown name returns close matches. Common names: sessionDefaultChannelGroup, sessionSourceMedium, sessionCampaignName, landingPagePlusQueryString, pagePath, eventName, deviceCategory, country, date; sessions, totalUsers, newUsers, engagementRate, screenPageViews, eventCount, keyEvents, totalRevenue, ecommercePurchases. Read-only. Costs 1 credit.
list_gtm_containersFreeList GTM containers
Lists every GTM container you can open, with GTM- IDs, ready for an audit.
Ask: “List my GTM containers”
Needs: Google connectionRead-onlyInputs and full description
No inputs.
What the AI reads: Use this when the user asks which Google Tag Manager accounts or containers they can access, or needs a container ID before a GTM audit. Lists every GTM container the connected Google accounts can open, with GTM- IDs. Free, read-only.
audit_gtm_container10 creditsAudit a GTM container (account access)
20 expert checks on the live version of your GTM container, with real tag, trigger and variable names and the fix for each problem.
Ask: “Audit my GTM container GTM-ABC1234”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is container_id string GTM container ID, for example GTM-TTRP67NH (list_gtm_containers shows them) What the AI reads: Use this when the user asks to audit their own Google Tag Manager container and has connected Google in MarStack. Reads the live published version through the Tag Manager API (real tag, trigger and variable names) and runs MarStack's 20 GTM expert checks: duplicate, dead and paused assets, firing logic and trigger overlap, GA4 event completeness and naming, deprecated UA tags, conversion linker, revenue and currency on ecommerce tags, UTM and cross-domain readiness, Consent Mode alignment, PII risk and server-side readiness. Returns a score out of 100, every failed and warning check with the fix, and a Report ID for a branded report. Read-only. For a container you have no access to, use audit_gtm_public_container instead. Costs 10 credits.
list_search_console_sitesFreeList Search Console sites
Lists the Search Console sites you can see and your permission level on each.
Ask: “Which Search Console sites do I have?”
Needs: Google connectionRead-onlyInputs and full description
No inputs.
What the AI reads: Use this when the user asks which Google Search Console sites (properties) they can access, or before reading Search Console data. Lists every verified site the connected Google accounts can see, with the permission level. Free, read-only.
get_search_console_data1 creditGet Search Console data
Queries, pages, clicks, impressions, CTR and position from Search Console, with the change against the previous period.
Ask: “Which queries lost clicks this month?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is site string The site, for example getinlytics.com, https://www.getinlytics.com/ or sc-domain:getinlytics.com days? string Period in days (default 28). Data ends 2 days ago because Search Console lags. dimension? query | page | country | device | date Break the data down by this (default query) query_contains? string Only search queries containing this text page_contains? string Only pages whose URL contains this text limit? integer Rows to show (default 25) What the AI reads: Use this when the user asks about Google search performance: top queries or pages, clicks, impressions, CTR or average position, by country, device or day. Reads Google Search Console for a site the connected Google account can see, for the last 7, 28 or 90 days, compared with the previous period of the same length. Read-only. Costs 1 credit.
list_bigquery_tablesFreeList BigQuery tables
Lists the BigQuery datasets you allow MarStack to read and their tables, with the GA4 export shown as one table and its date range.
Ask: “Which BigQuery tables can MarStack read?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is dataset? string Dataset as project.dataset, for example my-project.analytics_504011059 What the AI reads: Use this before writing BigQuery SQL. Without a dataset, lists the BigQuery datasets this workspace lets MarStack read (for example the GA4 export analytics_<property_id>). With dataset "project.dataset", lists its tables, with the GA4 daily export shown as events_* and its date range. Free, read-only.
describe_bigquery_tableFreeDescribe a BigQuery table
Shows the columns, types, size and partitioning of a BigQuery table, so queries are written against the real layout.
Ask: “What columns does my GA4 export table have?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is table string Table as project.dataset.table, for example my-project.analytics_504011059.events_* What the AI reads: Use this to see a BigQuery table's columns (nested fields as dotted names), types, row count, size and partitioning before writing SQL. For the GA4 export give project.dataset.events_* to describe the latest day. Free, read-only.
run_bigquery_sql1 creditRun BigQuery SQL
Answers what standard reports cannot (user paths, funnels, cohorts) with one read-only query on the BigQuery datasets you allow. A free dry run first, a size cap you set, and results with personal data removed.
Ask: “Which pages do buyers visit before their first purchase?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is sql string One BigQuery Standard SQL SELECT statement title? string Short name for the result, for example "Purchase funnel, October" max_rows? integer Rows to return (default 100) What the AI reads: Use this for questions the GA4 reports cannot answer (user paths, funnels, cohorts, joins with CRM or MarStack tables) on the user's own BigQuery data. One SELECT or WITH ... SELECT statement; tables named in full as `project.dataset.table` in datasets the workspace allows; filter dates (_TABLE_SUFFIX on events_*) and aggregate (no rows about individual people). MarStack checks the SQL, does a free dry run and refuses queries that would read more than the workspace's cap. Query cost is billed to the user's Google Cloud project. Costs 1 credit.
query_ga4_events1 creditQuery the GA4 export
Funnels, landing page paths, returning-user cohorts and events that stopped firing, from your GA4 export in BigQuery. Prebuilt, reviewed queries with a free dry run and a size cap you set.
Ask: “Where do people drop out between view_item and purchase?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is query daily_events | funnel | paths | cohorts | event_decay daily_events: Users, sessions and events by day; funnel: Funnel: users who did each step in order; paths: Landing page and the page viewed next; cohorts: Weekly cohorts: users returning in later weeks; event_decay: Events that stopped firing dataset? string GA4 export dataset as project.analytics_<property_id> (default: the only one this workspace allows) days? string Full days ending yesterday (default 28) steps? array Funnel steps as event names in order, for example ["view_item", "add_to_cart", "purchase"] event? string daily_events only: count just this event min_count? integer Leave out groups smaller than this (default 10) What the AI reads: Use this for GA4 questions the standard reports cannot answer, on the GA4 export in BigQuery: daily users, sessions and events; a funnel of 2 to 6 events in order; landing page and next page; weekly returning-user cohorts; events that stopped firing. The SQL is prebuilt and reviewed by MarStack (results are aggregated, page URLs lose query strings, small groups are left out) and goes through the same dry run and byte cap as run_bigquery_sql. Query cost is billed to the user's Google Cloud project. Costs 1 credit.
run_attribution_query1 creditAttribution and reconciliation
Reviewed BigQuery SQL for the questions that matter most: first touch, last touch, linear and position-based attribution on your GA4 export, Meta results vs GA4 vs CRM by campaign, leads to won deals by source, and cost per won deal and ROAS on CRM revenue.
Ask: “Which channels get credit for purchases under each attribution model?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is query attribution | reconciliation | lead_to_deal | cac_roas attribution: Conversions credited by first touch, last touch, linear and position-based models (GA4 export); reconciliation: Meta results vs GA4 key events vs CRM leads and won deals, by campaign; lead_to_deal: Leads, deals, won deals and won value by source; cac_roas: Meta spend against CRM leads, won deals and won value (CAC and ROAS), by campaign days? string Full days ending yesterday (default 90) by? channel | source_medium | campaign | source attribution: channel (default), source_medium or campaign; lead_to_deal: source (default), source_medium, campaign or channel event? string attribution only: the conversion event (default purchase), for example generate_lead lookback_days? string attribution only: days of sessions before a conversion that can get credit (default 30) dataset? string attribution only: GA4 export dataset as project.analytics_<property_id> (default: the only one allowed) min_count? integer Leave out groups smaller than this (default 5) What the AI reads: Use this for attribution and pipeline questions on the user's BigQuery data, with SQL prebuilt and reviewed by MarStack: attribution (first touch, last touch, linear and position-based credit for a conversion event, by channel, source / medium or campaign, on the GA4 export); reconciliation (Meta results vs GA4 key events vs CRM leads and won deals, by campaign); lead_to_deal (leads, deals, won deals and won value by source, source / medium, campaign or channel); cac_roas (Meta spend against CRM leads, won deals and won value, by campaign). reconciliation and cac_roas need the daily BigQuery sync; the CRM side uses the sync tables and any CRM tables mapped in BigQuery. Results are aggregated, small groups are left out, and the query goes through the same dry run and byte cap as run_bigquery_sql. Query cost is billed to the user's Google Cloud project. Costs 1 credit.
full_auditFreeFull audit
Every audit for a client in one go: GA4, the GTM container, Meta Ads and the website (tracking, GTM and consent), as one scorecard with the ten fixes that matter most and one branded report of everything.
Ask: “Run a full audit of example.com”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is client? string Client or site name for the scorecard title url? string Website to check (tracking, public GTM, consent), for example https://example.com property_id? string GA4 property ID to audit container_id? string GTM container ID to audit through the account connection ad_account_id? string Meta ad account ID to audit website_checks? boolean Run the website checks when a url is given (default true) What the AI reads: Use this when the user asks for a full audit, health check or scorecard of a client across platforms. Runs every audit asked for in one go: the GA4 property, the GTM container, the Meta ad account, and for the website the tracking check, the public GTM audit (when no container is given) and the consent check. Returns one scorecard (verdict, score, failed checks and warnings per area), the ten most serious fixes across all of them, and one Report ID for a single branded report of everything. Each audit costs its usual credits (GA4, GTM, Meta, public GTM and consent 10 each, tracking check 5) and is refunded if it fails; tell the user the total before running a large one.
diagnose_platform_mismatch2 creditsDiagnose a Meta and GA4 mismatch
Meta says 40 sales, GA4 says 25: finds out why. Reads both platforms for the same dates, the latest audits and, if you like, your thank-you page in a real browser, then ranks the causes by evidence with the fix for each.
Ask: “Why does Meta report more leads than GA4?”
Needs: Meta connectionRead-onlyInputs and full description
Input Type What it is property_id string Numeric GA4 property ID ad_account_id string Meta ad account ID days? string Full days ending yesterday (default 28) ga4_event? string GA4 event to compare (default purchase for Meta purchases, generate_lead for Meta leads) conversion_page? string Thank-you or confirmation page to load in a real browser, for example https://example.com/thank-you What the AI reads: Use this when Meta and GA4 disagree on conversions ("Meta says 40 sales, GA4 says 25", "why are my Meta leads not in GA4"). Reads both platforms for the same dates (Meta results and link clicks; GA4 events, the share credited to Meta traffic and Meta sessions), the latest Meta and GA4 audits, and optionally loads the conversion page in a real browser, then ranks the likely causes by evidence (missing UTMs, missing event, double counting, consent, payment referrals, attribution windows) with the fix for each. Read-only. Costs 2 credits, plus 5 for the page test when conversion_page is given.
get_crm_data1 creditGet CRM data
Leads, deals, win rate and won value from your CRM by source, campaign, stage or month, compared with the period before. Connect HubSpot, Salesforce or Zoho CRM (read-only, refreshed daily) or upload a CSV from any CRM. Names, emails and phones are never stored.
Ask: “Which source brought the most won deals this quarter?”
Needs: CRM connection or CSVRead-onlyInputs and full description
Input Type What it is by? source | source_medium | campaign | stage | month | week Break down by this (default source_medium) days? string Period in days ending today (default 90), compared with the period before kind? leads | deals Only uploads of this kind (default both) limit? integer Rows to show (default 25) What the AI reads: Use this for pipeline and revenue questions: leads or deals from the CRM data in MarStack (CSV uploads, connected HubSpot, Salesforce or Zoho CRM, and CRM tables mapped in the user's BigQuery), by source, source / medium, campaign, stage, month or week, with won deals, win rate and won value, compared with the previous period of the same length. Combine with get_ga4_performance and get_meta_performance to tie marketing to revenue. No personal data is stored or returned: BigQuery tables are added up inside BigQuery, and that query is billed to the user's Google Cloud project. Read-only. Costs 1 credit.
get_crm_table_mapFreeGet the CRM table map
Gives your assistant the SQL that maps CRM data you already keep in BigQuery onto standard columns (date, stage, won, value, source, campaign, click IDs), so it can join it with the GA4 export without moving any data.
Ask: “Which campaigns in my GA4 export led to won deals in our CRM table?”
Needs: Google connectionRead-onlyInputs and full description
No inputs.
What the AI reads: Use this before writing BigQuery SQL that joins CRM data with the GA4 export or other tables. Lists the CRM tables the workspace mapped in BigQuery and, for each, a SELECT that turns it into MarStack's CRM columns (record_date, stage, won, value, currency, source, medium, campaign, content, term, has_gclid, has_fbclid, has_ga_id). Paste it as a WITH block into run_bigquery_sql. Free, read-only.
get_marketing_overview1 creditGet marketing overview
GA4, Meta Ads, Search Console and your CRM for the same dates in one table per channel or campaign: sessions, key events, ad spend, search clicks, deals and won value, with cost per deal and return on ad spend. Each platform's own conversions side by side, never added together.
Ask: “Which channel brings the most won deals for our ad spend?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is property_id string Numeric GA4 property ID, for example 504011059 by? channel | campaign One row per source / medium (channel, default) or per campaign days? string Period in full days ending yesterday (default 28), compared with the period before meta_ad_account_id? string Meta ad account ID to include spend and results (list_meta_ad_accounts shows them) google_ads_customer_id? string Google Ads customer ID to include cost and conversions (list_google_ads_accounts shows them) site? string Search Console site to include Google search clicks, for example getinlytics.com include_crm? boolean Include CRM data uploaded in MarStack (default true when there is some) limit? integer Rows to show (default 25) What the AI reads: Use this first for "how is our marketing doing overall", "which channel or campaign brings deals", "is our ad spend paying off" and weekly or monthly reviews. One table per source / medium or campaign for the same dates: GA4 sessions, key events and revenue, plus Meta Ads and Google Ads spend and results, Google search clicks and CRM leads, won deals and won value when given or uploaded, with ad spend per CRM lead and return on ad spend on CRM value, and totals against the previous period. Platform, GA4 and CRM conversions are shown side by side, never added. Read-only. Costs 1 credit per platform included (GA4 plus each of Meta, Google Ads, Search Console and CRM).
list_meta_ad_accountsFreeList Meta ad accounts
Lists the Meta ad accounts your connected Meta logins can read, with IDs, currency and status.
Ask: “Which Meta ad accounts can I access?”
Needs: Meta connectionRead-onlyInputs and full description
No inputs.
What the AI reads: Use this when the user asks which Meta (Facebook or Instagram) ad accounts they can access, or needs an ad account ID before a Meta audit. Lists the ad accounts the Meta logins connected in this workspace can read. Free, read-only.
audit_meta_ads10 creditsAudit a Meta ad account
34 expert checks on your Meta ad account: pixel and Conversions API, match quality, optimisation events, Learning Limited, rejected ads, frequency, UTMs, plus a live check that the pixel waits for consent.
Ask: “Audit my Meta ad account 1234567890”
Needs: Meta connectionRead-onlyInputs and full description
Input Type What it is ad_account_id string Meta ad account ID, for example 1041197038965845 or act_1041197038965845 (Ads Manager, account dropdown) site_url? string The website the pixel is on, for example https://example.com. Optional: by default MarStack uses the domain the pixel fires on most. skip_site? boolean Skip loading the website (faster; the site checks are then marked not checked) What the AI reads: Use this when the user asks to audit, review or health-check their Meta (Facebook or Instagram) ads, Meta Pixel or Conversions API setup. Needs the Meta connection made in the MarStack dashboard. Runs MarStack's 34 Meta checks: account health and spending limit, pixel firing, Conversions API share, advanced matching and match keys, conversion events, optimisation goals and events, attribution, Learning Limited, disapproved ads, frequency and rankings, UTMs on ads, purchase values, plus a live load of the site the pixel fires on (pixel ID, event_id deduplication, firing before consent). Returns a score out of 100, every failed and warning check ranked by impact with the fix, and a Report ID for a branded report. Read-only (ads_read): nothing in Meta is changed. Costs 10 credits.
get_meta_performance1 creditGet Meta Ads performance
Spend, clicks, CTR, CPC, purchases or leads, cost per result and ROAS from Meta Ads, by campaign, ad set or ad.
Ask: “Which Meta campaigns had the best ROAS last month?”
Needs: Meta connectionRead-onlyInputs and full description
Input Type What it is ad_account_id string Meta ad account ID, for example 1041197038965845 or act_1041197038965845 (Ads Manager, account dropdown) days? string Period in days (default 30) level? campaign | adset | ad Break the results down by this (default campaign) limit? integer Rows to show, highest spend first (default 25) What the AI reads: Use this when the user asks how their Meta (Facebook or Instagram) ads are performing: spend, impressions, clicks, CTR, CPC, purchases or leads, value and ROAS, for the account or by campaign, ad set or ad. Read-only. Costs 1 credit.
create_reportFreeCreate a branded MarStack report
Turns any check into a branded report: PDF or Word audit, Excel workbook or PowerPoint deck.
Ask: “Make a PDF report of that audit”
No setup neededInputs and full description
Input Type What it is report_id string Report ID from a MarStack check, for example ms-20261018-101500-ab12 format pdf | docx | xlsx | pptx | html pdf or docx = audit document, xlsx = spreadsheet, pptx = presentation, html = web page What the AI reads: Turns a finished MarStack check into a branded MarStack report file: an audit document (pdf or docx), a spreadsheet (xlsx) or a presentation (pptx). Call this only when the user asks for a report, document, spreadsheet or presentation. Never call it on your own after a check. Needs the Report ID shown at the top of the check (ms-...). Free, no credits used. Returns the saved file path.
create_analysis_reportFreeCreate a branded analysis report
Turns an analysis across several MarStack results into one branded Excel, PDF, Word or PowerPoint file. Tables are copied from MarStack, never retyped; your agency brand if white-label is on.
Ask: “Put this analysis in a branded spreadsheet”
No setup neededInputs and full description
Input Type What it is title string Report title, for example "Why organic leads fell in October" report_ids array Report IDs of the MarStack results the analysis used, most important first summary string Two to five sentences: the answer, the key numbers and what to do findings? array Key findings, most important first, each with its number actions? array Recommended actions with expected impact and effort caveats? array Data quality issues and limits of the analysis format xlsx | pdf | docx | pptx | html xlsx = spreadsheet with every row as real numbers, pdf or docx = document, pptx = presentation, html = web page What the AI reads: Use this whenever the user asks for a spreadsheet, document, presentation or report of an analysis you did with MarStack data (GA4 performance or reports, Search Console, Meta performance, audits and checks). Use it instead of creating a spreadsheet or document yourself, so the file carries the account's branding and its numbers come from MarStack, not retyped. Pass the Report IDs shown by the MarStack results you used, plus your title, summary, key findings, recommended actions (with impact and effort) and caveats. MarStack copies the tables from those results unchanged and adds your text. Free, no credits used. Returns the saved file path and a new Report ID.
propose_negative_keywordsFreePropose negative keywords (Google Ads)
Proposes negative keywords for search terms that waste budget. Google checks the change first, you approve it, and it can be undone.
Ask: “Block the search terms that never convert”
Needs: Google connectionInputs and full description
Input Type What it is customer_id string Google Ads customer ID, for example 123-456-7890 campaign_id string keywords array reason string login_customer_id? string Manager account ID, when the account is reached through a manager What the AI reads: Propose adding negative keywords to a Google Ads campaign. Nothing changes until a person approves it in MarStack or Slack; Google checks it first in a dry run. Use for search terms that spend without converting. Never propose brand terms. Free.
propose_status_changeFreePropose pausing or enabling (Google Ads)
Proposes pausing or enabling a Google Ads campaign, ad group or ad, with an undo.
Ask: “Pause the ad group with no conversions this month”
Needs: Google connectionInputs and full description
Input Type What it is customer_id string level campaign | ad_group | ad id string Campaign, ad group or ad ID ad_group_id? string Needed for an ad status PAUSED | ENABLED reason string login_customer_id? string What the AI reads: Propose pausing or enabling a Google Ads campaign, ad group or ad. Waits for a person to approve it in MarStack or Slack, with an undo. Free.
propose_budget_changeFreePropose a budget change (Google Ads)
Proposes a new daily budget, at most 20% up or down per change, and warns when the campaign is still learning.
Ask: “Raise the budget on my best campaign”
Needs: Google connectionInputs and full description
Input Type What it is customer_id string campaign_id string new_daily_budget number In the account currency reason string login_customer_id? string What the AI reads: Propose a new daily budget for a Google Ads campaign, at most 20% up or down per change. Warns when the campaign is in bidding learning. Waits for a person to approve it, with an undo. Free.
propose_offline_conversionsFreePropose sending CRM conversions to Google Ads
Proposes sending qualified leads and won deals from your CRM to Google Ads, so bidding learns from revenue, not form fills.
Ask: “Send last month's won deals to Google Ads”
Needs: CRM connection or CSVInputs and full description
Input Type What it is customer_id string conversion_action_id string conversions array reason string login_customer_id? string What the AI reads: Propose uploading qualified leads or won deals (with gclid) from the CRM to a Google Ads import conversion action, so bidding learns from revenue. Waits for approval; Google validates it first. Free.
propose_ga4_annotationFreePropose a GA4 annotation
Proposes a note on the GA4 timeline, such as "Consent banner changed", so later charts explain themselves.
Ask: “Note in GA4 that the new landing page went live today”
Needs: Google connectionInputs and full description
Input Type What it is property_id string date string title string description? string reason string What the AI reads: Propose a note on the GA4 timeline (for example "Consent banner changed" or "Campaign launched") so charts explain themselves later. Waits for approval. Free.
propose_gtm_setup10 creditsSet up GTM tracking for a landing page
Scans a new landing page and your live GTM container, then drafts the tags and triggers it needs. Tested in GTM preview first; nothing is published until you approve.
Ask: “Set up tracking for my new landing page”
Needs: Google connectionInputs and full description
Input Type What it is url string container_id string measurement_id? string ads_conversion_id? string ads_label? string meta_pixel_id? string event_name? string What the AI reads: Scans a landing page (forms, phone links, whether it pushes generate_lead), reads the live GTM container and drafts the tracking: GA4 event, Google Ads conversion with Conversion Linker, Meta Lead with event_id, triggers, variables and consent settings. Proposes step 1 for approval: build it in a new GTM workspace, compile it and live-test it in preview. After that, step 2 (publish) waits for the account owner; a live test runs after publishing, with a rollback offered if it fails. Costs 10 credits.
list_pending_changesFreeList changes waiting for approval
Shows every proposed change in your workspace and where it stands: waiting, applied, rejected, expired or undone.
Ask: “Which changes are waiting for approval?”
No setup neededRead-onlyInputs and full description
Input Type What it is status? pending | applied | rejected | expired | failed | undone | all What the AI reads: Changes proposed in this workspace and their status (pending, applied, rejected, expired, failed, undone). Free.
remember_factFreePropose a fact for the agent to remember
Saves a lasting fact for your workspace, such as a target CPA or "never pause brand campaigns", after a person confirms it.
Ask: “Remember that our target CPA is $40”
No setup neededInputs and full description
Input Type What it is fact string scope? team | private expires_on? string For time-bound facts, such as a Q4 target What the AI reads: Propose a short lasting fact for this workspace (target CPA or ROAS, naming rules, brand terms, "never pause brand campaigns", monthly budgets). A person confirms it in MarStack before the agent uses it. Never store metrics or personal data. Free.
search_historyFreeSearch this workspace's history
Finds past audits, answers, approved changes and platform changes in your workspace by meaning or by exact ID.
Ask: “What did we find in the last GTM audit?”
No setup neededRead-onlyInputs and full description
Input Type What it is query string kinds? array limit? integer What the AI reads: Finds past audits, answers, approved changes, agent runs and recorded platform changes in this workspace by meaning and by exact IDs (GTM-…, G-…). Use it before explaining a change ("did this happen before?", "what changed in March?"). Returns passages to cite. Numbers must still come from live tools. Free.
search_knowledgeFreeSearch the knowledge base
Finds MarStack's fix guidance for every audit check, plus the brand guidelines and briefs your workspace uploaded.
Ask: “How do I fix enhanced conversions?”
No setup neededRead-onlyInputs and full description
Input Type What it is query string limit? integer What the AI reads: Finds MarStack's fix guidance for every audit check (GA4, GTM, Meta, Google Ads), the team's feedback on checks (wrong, accepted risk, badly worded) with reviewed MarStack notes, and the files this workspace uploaded (brand guidelines, briefs, targets). Check it before repeating a finding the team disputed. Cite the passage you use. Free.
give_feedbackFreeGive feedback on an audit finding
Tell MarStack what you think of a finding: right, wrong, accepted risk or badly worded. The next audit shows accepted risks labelled and unscored and your note next to the finding, and MarStack reviews what you mark wrong.
Ask: “The cross-domain finding is wrong for this client: they use one domain”
No setup neededInputs and full description
Input Type What it is report_id string Report ID of the audit, for example ms-20261107-150628-0347 check string Check name as shown in the report, for example "Cross-domain measurement" verdict right | wrong | accepted | wording reason string Why, in the user's words; required except for "right" all_properties? boolean True to apply it to every property, container or account in the workspace, not only the audited one What the AI reads: Records the team's verdict on one check of a MarStack audit report: right, wrong, accepted (not relevant for us or accepted risk) or wording (right but badly worded), with the reason. From the next audit of the same property, container or ad account, accepted checks are shown labelled and not scored, and the note is shown next to findings marked wrong or badly worded; "wrong" and "wording" are also reviewed by the MarStack team. Use it only when the user says what they think of a finding; never decide for them. Name the check as it appears in the report. Owners and analysts only. Free.
run_live_test8 creditsLive conversion test
Tests your conversion tracking end to end: opens the page in a real browser, answers the cookie banner, fills and submits the form, and checks that GA4, Google Ads and Meta receive the conversion.
Ask: “Does my contact form conversion really reach GA4?”
Needs: Any websiteInputs and full description
Input Type What it is url string Page with the form, for example https://example.com/contact form_selector? string CSS selector of the form, when the page has several submit? boolean Submit the form (default true). False checks consent and tags only. consent? both | accept | reject | none test_email? string An inbox you own, to receive the site's confirmation email (default marstack-test@example.com) expected_event? string When there is no tracking plan, the dataLayer and GA4 event to expect (default generate_lead) What the AI reads: Tests whether conversion tracking really works: opens the page in a real browser with a clean profile, answers the consent banner (Accept with a form submission, then Reject), fills the form with a marked test identity, submits once and checks what reaches GA4, Google Ads, Meta, LinkedIn and Microsoft against the tracking plan. Returns pass or fail per test case (TC1 to TC16) with evidence and screenshots. Tags are captured and answered by MarStack, so nothing is added to the site's reports; the site's own form backend does receive one test lead, marked "MarStack conversion test". No ad or analytics account is opened. Costs 8 credits.
get_tracking_planFreeTracking plan
The conversions that matter for your business and where each one must arrive: GA4, Google Ads and Meta.
Ask: “What is our tracking plan?”
No setup neededRead-onlyInputs and full description
No inputs.
What the AI reads: The conversions that matter for this workspace and where each must arrive (GA4, Google Ads, Meta). Free.
draft_tracking_planFreeDraft the tracking plan
Drafts your tracking plan from GA4 key events and your GTM tags. You confirm it, and every audit and live test then checks against it.
Ask: “Draft a tracking plan for this client”
Needs: Google connectionInputs and full description
No inputs.
What the AI reads: Drafts the tracking plan from GA4 key events and the GTM containers' event and conversion tags. A person confirms it on the Tracking plan page; a confirmed plan is never overwritten. Free.
get_recent_changesFreeRecent platform changes
GTM versions published, GA4 key events added or removed, and Google Ads changes, so a sudden drop has a likely cause.
Ask: “Did anything change before conversions dropped?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is days? integer platform? gtm | ga4 | google_ads What the AI reads: GTM versions published, GA4 key events added or removed, and Google Ads account changes MarStack recorded in this workspace. Use it when a number moved: most drops follow a change. Free.
list_google_ads_accountsFreeList Google Ads accounts
Lists the Google Ads accounts your Google connection can open, including accounts under a manager account.
Ask: “Which Google Ads accounts can I access?”
Needs: Google connectionRead-onlyInputs and full description
No inputs.
What the AI reads: Google Ads accounts the workspace's Google connection can open, including accounts under a manager account. Free.
get_google_ads_performance1 creditGoogle Ads performance
Cost, clicks, conversions, value and cost per conversion from Google Ads by campaign, ad group, keyword or search term.
Ask: “Which search terms spent money with no leads last month?”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is customer_id string view? campaign | ad_group | keyword | search_term days? integer limit? integer login_customer_id? string What the AI reads: Cost, clicks, impressions, conversions, value and cost per conversion by campaign, ad group, keyword or search term. Costs 1 credit.
audit_google_ads10 creditsAudit a Google Ads account
24 expert checks on your Google Ads account over the last 30 days: conversion tracking, wasted search terms, budgets, bidding and ad strength, ranked by impact.
Ask: “Audit my Google Ads account”
Needs: Google connectionRead-onlyInputs and full description
Input Type What it is customer_id string login_customer_id? string What the AI reads: Runs MarStack's 24 Google Ads checks over the last 30 days: conversion tracking and quality (primary actions recording, auto-tagging, enhanced conversions, counting, CRM import), structure, targeting (negatives, location option, broad match), bidding and budget (budget-limited, wasted search terms, learning, Quality Score), ads and assets. Returns a score out of 100 with fixes; MarStack can then propose the fixes it can make for approval. Costs 10 credits.
Ready-made prompts
In Claude Desktop, pick these from the + menu under MarStack. They walk your assistant through a full check step by step.
Business question
Ask any marketing or business question; MarStack combines GA4, Meta, Search Console, CRM and BigQuery data and answers like an analyst.
Why did it change?
Find out why leads, sales, revenue or traffic rose or fell, and whether tracking is to blame.
Marketing review
A weekly, monthly or quarterly marketing review across every connected platform, with wins, concerns and next actions.
Meta vs GA4
Why Meta and GA4 report different conversions, with the causes ranked by evidence and the fix for each.
Which channel pays?
Which channels and campaigns bring won deals for the money spent, from GA4, Meta, Search Console and your CRM data.
Funnel
Where people drop out between steps (for example view_item, add_to_cart, purchase), from the GA4 export in BigQuery.
BigQuery analysis
Answer a question with SQL on your GA4 export, MarStack sync tables and CRM data in your own BigQuery.
Tracking check
See every tag, pixel, hit and cookie that fires on a page, using MarStack.
Consent check
Test the cookie banner: what fires before a choice, after Reject and after Accept, using MarStack.
GTM audit
Audit the live Google Tag Manager container behind a site, using MarStack.
GA4 audit
Run the 89-check GA4 property audit, using MarStack.
GTM container audit
Run the 20-check GTM audit on your own container, using MarStack.
Search Console
Top Google search queries for a site over the last 28 days, using MarStack.
Full audit
Every audit for a client in one scorecard (website checks, plus GA4, GTM and Meta when connected), using MarStack.
Create report
Create a branded MarStack PDF, Word, Excel or PowerPoint report from a finished check.
Meta Ads, Google Ads, BigQuery, LinkedIn and TikTok tools are next. See the changelog.