Skip to main content
MarStack.

Tool reference

All 45 tools in MarStack 0.1.0, generated from the server's own tool definitions. Your assistant picks the tool; this page shows what it can call.

Audits

audit_gtm_public_container

10 credits

Audits the published GTM container behind any website, no access needed: tags, consent settings, measurement IDs and risky Custom HTML.

InputRequiredDescription
urlstringNoA page on the site, for example https://example.com
container_idstringNoA GTM container ID, for example GTM-ABC1234

audit_ga4_property

10 credits

89 expert checks on your GA4 property: data quality, events, ecommerce, links, audiences, PII and consent, scored out of 100 and ranked by impact.

InputRequiredDescription
property_idstringYesNumeric GA4 property ID, for example 504011059 (Admin, Property settings, Property details). Not the G- measurement ID.
skip_sitebooleanNoSkip loading the website (faster; the tag and consent checks are then marked not checked)

audit_gtm_container

10 credits

20 expert checks on the live version of your GTM container, with real tag, trigger and variable names and the fix for each problem.

InputRequiredDescription
container_idstringYesGTM container ID, for example GTM-TTRP67NH (list_gtm_containers shows them)

full_audit

Free

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.

InputRequiredDescription
clientstringNoClient or site name for the scorecard title
urlstringNoWebsite to check (tracking, public GTM, consent), for example https://example.com
property_idstringNoGA4 property ID to audit
container_idstringNoGTM container ID to audit through the account connection
ad_account_idstringNoMeta ad account ID to audit
website_checksbooleanNoRun the website checks when a url is given (default true)

diagnose_platform_mismatch

2 credits

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.

InputRequiredDescription
property_idstringYesNumeric GA4 property ID
ad_account_idstringYesMeta ad account ID
daysstringNoFull days ending yesterday (default 28)
ga4_eventstringNoGA4 event to compare (default purchase for Meta purchases, generate_lead for Meta leads)
conversion_pagestringNoThank-you or confirmation page to load in a real browser, for example https://example.com/thank-you

audit_meta_ads

10 credits

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.

InputRequiredDescription
ad_account_idstringYesMeta ad account ID, for example 1041197038965845 or act_1041197038965845 (Ads Manager, account dropdown)
site_urlstringNoThe website the pixel is on, for example https://example.com. Optional: by default MarStack uses the domain the pixel fires on most.
skip_sitebooleanNoSkip loading the website (faster; the site checks are then marked not checked)

draft_tracking_plan

Free

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.

audit_google_ads

10 credits

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.

InputRequiredDescription
customer_idstringYes
login_customer_idstringNo

Website checks

inspect_page_tracking

5 credits

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.

InputRequiredDescription
urlstringYesPage to inspect, for example https://example.com/checkout/thank-you
wait_secondsnumberNoExtra seconds to wait after load for late tags (default 4)
consentnone | accept | rejectNoAfter recording the first load, click the consent banner's Accept or Reject button and record what fires next (default none)

run_live_test

8 credits

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.

InputRequiredDescription
urlstringYesPage with the form, for example https://example.com/contact
form_selectorstringNoCSS selector of the form, when the page has several
submitbooleanNoSubmit the form (default true). False checks consent and tags only.
consentboth | accept | reject | noneNo
test_emailstringNoAn inbox you own, to receive the site's confirmation email (default marstack-test@example.com)
expected_eventstringNoWhen there is no tracking plan, the dataLayer and GA4 event to expect (default generate_lead)

Data

get_ga4_performance

1 credit

Sessions, users, engagement, key events and revenue by channel, campaign, landing page, device or country, compared with the previous period, with data-quality warnings.

InputRequiredDescription
property_idstringYesNumeric GA4 property ID, for example 504011059
bychannel | source_medium | campaign | landing_page | device | country | dateNoBreak down by this (default channel)
daysstringNoPeriod in full days ending yesterday (default 28), compared with the period before
key_eventstringNoCount only this key event, for example generate_lead or purchase (default: all key events)
limitintegerNoRows to show (default 15)

run_ga4_report

1 credit

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.

InputRequiredDescription
property_idstringYesNumeric GA4 property ID
dimensionsarrayYesGA4 dimension API names (or UI names), for example ["sessionSourceMedium"]. Can be empty for totals only.
metricsarrayYesGA4 metric API names, for example ["sessions","keyEvents"]
start_datestringNoYYYY-MM-DD, yesterday or NdaysAgo (default 28daysAgo)
end_datestringNoYYYY-MM-DD, today or yesterday (default yesterday)
compare_previousbooleanNoAlso show the previous period of the same length (needs YYYY-MM-DD dates)
filtersarrayNoDimension filters, all must match, for example [{"field":"sessionDefaultChannelGroup","match":"exact","value":"Paid Social"}]
order_bystringNoMetric to sort by, highest first (default the first metric)
limitintegerNoRows to show (default 25)

get_search_console_data

1 credit

Queries, pages, clicks, impressions, CTR and position from Search Console, with the change against the previous period.

InputRequiredDescription
sitestringYesThe site, for example getinlytics.com, https://www.getinlytics.com/ or sc-domain:getinlytics.com
daysstringNoPeriod in days (default 28). Data ends 2 days ago because Search Console lags.
dimensionquery | page | country | device | dateNoBreak the data down by this (default query)
query_containsstringNoOnly search queries containing this text
page_containsstringNoOnly pages whose URL contains this text
limitintegerNoRows to show (default 25)

run_bigquery_sql

1 credit

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.

InputRequiredDescription
sqlstringYesOne BigQuery Standard SQL SELECT statement
titlestringNoShort name for the result, for example "Purchase funnel, October"
max_rowsintegerNoRows to return (default 100)

query_ga4_events

1 credit

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.

InputRequiredDescription
querydaily_events | funnel | paths | cohorts | event_decayYesdaily_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
datasetstringNoGA4 export dataset as project.analytics_<property_id> (default: the only one this workspace allows)
daysstringNoFull days ending yesterday (default 28)
stepsarrayNoFunnel steps as event names in order, for example ["view_item", "add_to_cart", "purchase"]
eventstringNodaily_events only: count just this event
min_countintegerNoLeave out groups smaller than this (default 10)

run_attribution_query

1 credit

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.

InputRequiredDescription
queryattribution | reconciliation | lead_to_deal | cac_roasYesattribution: 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
daysstringNoFull days ending yesterday (default 90)
bychannel | source_medium | campaign | sourceNoattribution: channel (default), source_medium or campaign; lead_to_deal: source (default), source_medium, campaign or channel
eventstringNoattribution only: the conversion event (default purchase), for example generate_lead
lookback_daysstringNoattribution only: days of sessions before a conversion that can get credit (default 30)
datasetstringNoattribution only: GA4 export dataset as project.analytics_<property_id> (default: the only one allowed)
min_countintegerNoLeave out groups smaller than this (default 5)

get_crm_data

1 credit

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.

InputRequiredDescription
bysource | source_medium | campaign | stage | month | weekNoBreak down by this (default source_medium)
daysstringNoPeriod in days ending today (default 90), compared with the period before
kindleads | dealsNoOnly uploads of this kind (default both)
limitintegerNoRows to show (default 25)

get_marketing_overview

1 credit

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.

InputRequiredDescription
property_idstringYesNumeric GA4 property ID, for example 504011059
bychannel | campaignNoOne row per source / medium (channel, default) or per campaign
daysstringNoPeriod in full days ending yesterday (default 28), compared with the period before
meta_ad_account_idstringNoMeta ad account ID to include spend and results (list_meta_ad_accounts shows them)
google_ads_customer_idstringNoGoogle Ads customer ID to include cost and conversions (list_google_ads_accounts shows them)
sitestringNoSearch Console site to include Google search clicks, for example getinlytics.com
include_crmbooleanNoInclude CRM data uploaded in MarStack (default true when there is some)
limitintegerNoRows to show (default 25)

get_meta_performance

1 credit

Spend, clicks, CTR, CPC, purchases or leads, cost per result and ROAS from Meta Ads, by campaign, ad set or ad.

InputRequiredDescription
ad_account_idstringYesMeta ad account ID, for example 1041197038965845 or act_1041197038965845 (Ads Manager, account dropdown)
daysstringNoPeriod in days (default 30)
levelcampaign | adset | adNoBreak the results down by this (default campaign)
limitintegerNoRows to show, highest spend first (default 25)

get_tracking_plan

Free

The conversions that matter for your business and where each one must arrive: GA4, Google Ads and Meta.

get_recent_changes

Free

GTM versions published, GA4 key events added or removed, and Google Ads changes, so a sudden drop has a likely cause.

InputRequiredDescription
daysintegerNo
platformgtm | ga4 | google_adsNo

get_google_ads_performance

1 credit

Cost, clicks, conversions, value and cost per conversion from Google Ads by campaign, ad group, keyword or search term.

InputRequiredDescription
customer_idstringYes
viewcampaign | ad_group | keyword | search_termNo
daysintegerNo
limitintegerNo
login_customer_idstringNo

Changes you approve

propose_negative_keywords

Free

Proposes negative keywords for search terms that waste budget. Google checks the change first, you approve it, and it can be undone.

InputRequiredDescription
customer_idstringYesGoogle Ads customer ID, for example 123-456-7890
campaign_idstringYes
keywordsarrayYes
reasonstringYes
login_customer_idstringNoManager account ID, when the account is reached through a manager

propose_status_change

Free

Proposes pausing or enabling a Google Ads campaign, ad group or ad, with an undo.

InputRequiredDescription
customer_idstringYes
levelcampaign | ad_group | adYes
idstringYesCampaign, ad group or ad ID
ad_group_idstringNoNeeded for an ad
statusPAUSED | ENABLEDYes
reasonstringYes
login_customer_idstringNo

propose_budget_change

Free

Proposes a new daily budget, at most 20% up or down per change, and warns when the campaign is still learning.

InputRequiredDescription
customer_idstringYes
campaign_idstringYes
new_daily_budgetnumberYesIn the account currency
reasonstringYes
login_customer_idstringNo

propose_offline_conversions

Free

Proposes sending qualified leads and won deals from your CRM to Google Ads, so bidding learns from revenue, not form fills.

InputRequiredDescription
customer_idstringYes
conversion_action_idstringYes
conversionsarrayYes
reasonstringYes
login_customer_idstringNo

propose_ga4_annotation

Free

Proposes a note on the GA4 timeline, such as "Consent banner changed", so later charts explain themselves.

InputRequiredDescription
property_idstringYes
datestringYes
titlestringYes
descriptionstringNo
reasonstringYes

propose_gtm_setup

10 credits

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.

InputRequiredDescription
urlstringYes
container_idstringYes
measurement_idstringNo
ads_conversion_idstringNo
ads_labelstringNo
meta_pixel_idstringNo
event_namestringNo

list_pending_changes

Free

Shows every proposed change in your workspace and where it stands: waiting, applied, rejected, expired or undone.

InputRequiredDescription
statuspending | applied | rejected | expired | failed | undone | allNo

Free utilities

marstack_status

Free

Confirms MarStack is connected and shows your plan, credits and connected platforms.

list_ga4_properties

Free

Lists every GA4 account and property your connected Google accounts can open, with property IDs.

list_gtm_containers

Free

Lists every GTM container you can open, with GTM- IDs, ready for an audit.

list_search_console_sites

Free

Lists the Search Console sites you can see and your permission level on each.

list_bigquery_tables

Free

Lists the BigQuery datasets you allow MarStack to read and their tables, with the GA4 export shown as one table and its date range.

InputRequiredDescription
datasetstringNoDataset as project.dataset, for example my-project.analytics_504011059

describe_bigquery_table

Free

Shows the columns, types, size and partitioning of a BigQuery table, so queries are written against the real layout.

InputRequiredDescription
tablestringYesTable as project.dataset.table, for example my-project.analytics_504011059.events_*

get_crm_table_map

Free

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.

list_meta_ad_accounts

Free

Lists the Meta ad accounts your connected Meta logins can read, with IDs, currency and status.

create_report

Free

Turns any check into a branded report: PDF or Word audit, Excel workbook or PowerPoint deck.

InputRequiredDescription
report_idstringYesReport ID from a MarStack check, for example ms-20261018-101500-ab12
formatpdf | docx | xlsx | pptx | htmlYespdf or docx = audit document, xlsx = spreadsheet, pptx = presentation, html = web page

create_analysis_report

Free

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.

InputRequiredDescription
titlestringYesReport title, for example "Why organic leads fell in October"
report_idsarrayYesReport IDs of the MarStack results the analysis used, most important first
summarystringYesTwo to five sentences: the answer, the key numbers and what to do
findingsarrayNoKey findings, most important first, each with its number
actionsarrayNoRecommended actions with expected impact and effort
caveatsarrayNoData quality issues and limits of the analysis
formatxlsx | pdf | docx | pptx | htmlYesxlsx = spreadsheet with every row as real numbers, pdf or docx = document, pptx = presentation, html = web page

remember_fact

Free

Saves a lasting fact for your workspace, such as a target CPA or "never pause brand campaigns", after a person confirms it.

InputRequiredDescription
factstringYes
scopeteam | privateNo
expires_onstringNoFor time-bound facts, such as a Q4 target

search_history

Free

Finds past audits, answers, approved changes and platform changes in your workspace by meaning or by exact ID.

InputRequiredDescription
querystringYes
kindsarrayNo
limitintegerNo

search_knowledge

Free

Finds MarStack's fix guidance for every audit check, plus the brand guidelines and briefs your workspace uploaded.

InputRequiredDescription
querystringYes
limitintegerNo

give_feedback

Free

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.

InputRequiredDescription
report_idstringYesReport ID of the audit, for example ms-20261107-150628-0347
checkstringYesCheck name as shown in the report, for example "Cross-domain measurement"
verdictright | wrong | accepted | wordingYes
reasonstringYesWhy, in the user's words; required except for "right"
all_propertiesbooleanNoTrue to apply it to every property, container or account in the workspace, not only the audited one

list_google_ads_accounts

Free

Lists the Google Ads accounts your Google connection can open, including accounts under a manager account.

NextBusiness questions