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 creditsAudits the published GTM container behind any website, no access needed: tags, consent settings, measurement IDs and risky Custom HTML.
| Input | Required | Description |
|---|---|---|
urlstring | No | A page on the site, for example https://example.com |
container_idstring | No | A GTM container ID, for example GTM-ABC1234 |
audit_ga4_property
10 credits89 expert checks on your GA4 property: data quality, events, ecommerce, links, audiences, PII and consent, scored out of 100 and ranked by impact.
| Input | Required | Description |
|---|---|---|
property_idstring | Yes | Numeric GA4 property ID, for example 504011059 (Admin, Property settings, Property details). Not the G- measurement ID. |
skip_siteboolean | No | Skip loading the website (faster; the tag and consent checks are then marked not checked) |
audit_gtm_container
10 credits20 expert checks on the live version of your GTM container, with real tag, trigger and variable names and the fix for each problem.
| Input | Required | Description |
|---|---|---|
container_idstring | Yes | GTM container ID, for example GTM-TTRP67NH (list_gtm_containers shows them) |
full_audit
FreeEvery 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.
| Input | Required | Description |
|---|---|---|
clientstring | No | Client or site name for the scorecard title |
urlstring | No | Website to check (tracking, public GTM, consent), for example https://example.com |
property_idstring | No | GA4 property ID to audit |
container_idstring | No | GTM container ID to audit through the account connection |
ad_account_idstring | No | Meta ad account ID to audit |
website_checksboolean | No | Run the website checks when a url is given (default true) |
diagnose_platform_mismatch
2 creditsMeta 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.
| Input | Required | Description |
|---|---|---|
property_idstring | Yes | Numeric GA4 property ID |
ad_account_idstring | Yes | Meta ad account ID |
daysstring | No | Full days ending yesterday (default 28) |
ga4_eventstring | No | GA4 event to compare (default purchase for Meta purchases, generate_lead for Meta leads) |
conversion_pagestring | No | Thank-you or confirmation page to load in a real browser, for example https://example.com/thank-you |
audit_meta_ads
10 credits34 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.
| Input | Required | Description |
|---|---|---|
ad_account_idstring | Yes | Meta ad account ID, for example 1041197038965845 or act_1041197038965845 (Ads Manager, account dropdown) |
site_urlstring | No | The website the pixel is on, for example https://example.com. Optional: by default MarStack uses the domain the pixel fires on most. |
skip_siteboolean | No | Skip loading the website (faster; the site checks are then marked not checked) |
draft_tracking_plan
FreeDrafts 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 credits24 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.
| Input | Required | Description |
|---|---|---|
customer_idstring | Yes | |
login_customer_idstring | No |
Website checks
inspect_page_tracking
5 creditsLoads a page in a real browser and records every tag, pixel, hit and cookie that fires. Hits are blocked, so your analytics stay clean.
| Input | Required | Description |
|---|---|---|
urlstring | Yes | Page to inspect, for example https://example.com/checkout/thank-you |
wait_secondsnumber | No | Extra seconds to wait after load for late tags (default 4) |
consentnone | accept | reject | No | After recording the first load, click the consent banner's Accept or Reject button and record what fires next (default none) |
check_consent_compliance
10 creditsClicks Reject and Accept on the cookie banner in two fresh visits and compares what fires, with a compliance verdict and screenshots.
| Input | Required | Description |
|---|---|---|
urlstring | Yes | Page to check, usually the home page, for example https://example.com |
run_live_test
8 creditsTests 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.
| Input | Required | Description |
|---|---|---|
urlstring | Yes | Page with the form, for example https://example.com/contact |
form_selectorstring | No | CSS selector of the form, when the page has several |
submitboolean | No | Submit the form (default true). False checks consent and tags only. |
consentboth | accept | reject | none | No | |
test_emailstring | No | An inbox you own, to receive the site's confirmation email (default marstack-test@example.com) |
expected_eventstring | No | When there is no tracking plan, the dataLayer and GA4 event to expect (default generate_lead) |
Data
get_ga4_performance
1 creditSessions, users, engagement, key events and revenue by channel, campaign, landing page, device or country, compared with the previous period, with data-quality warnings.
| Input | Required | Description |
|---|---|---|
property_idstring | Yes | Numeric GA4 property ID, for example 504011059 |
bychannel | source_medium | campaign | landing_page | device | country | date | No | Break down by this (default channel) |
daysstring | No | Period in full days ending yesterday (default 28), compared with the period before |
key_eventstring | No | Count only this key event, for example generate_lead or purchase (default: all key events) |
limitinteger | No | Rows to show (default 15) |
run_ga4_report
1 creditAny 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.
| Input | Required | Description |
|---|---|---|
property_idstring | Yes | Numeric GA4 property ID |
dimensionsarray | Yes | GA4 dimension API names (or UI names), for example ["sessionSourceMedium"]. Can be empty for totals only. |
metricsarray | Yes | GA4 metric API names, for example ["sessions","keyEvents"] |
start_datestring | No | YYYY-MM-DD, yesterday or NdaysAgo (default 28daysAgo) |
end_datestring | No | YYYY-MM-DD, today or yesterday (default yesterday) |
compare_previousboolean | No | Also show the previous period of the same length (needs YYYY-MM-DD dates) |
filtersarray | No | Dimension filters, all must match, for example [{"field":"sessionDefaultChannelGroup","match":"exact","value":"Paid Social"}] |
order_bystring | No | Metric to sort by, highest first (default the first metric) |
limitinteger | No | Rows to show (default 25) |
get_search_console_data
1 creditQueries, pages, clicks, impressions, CTR and position from Search Console, with the change against the previous period.
| Input | Required | Description |
|---|---|---|
sitestring | Yes | The site, for example getinlytics.com, https://www.getinlytics.com/ or sc-domain:getinlytics.com |
daysstring | No | Period in days (default 28). Data ends 2 days ago because Search Console lags. |
dimensionquery | page | country | device | date | No | Break the data down by this (default query) |
query_containsstring | No | Only search queries containing this text |
page_containsstring | No | Only pages whose URL contains this text |
limitinteger | No | Rows to show (default 25) |
run_bigquery_sql
1 creditAnswers 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.
| Input | Required | Description |
|---|---|---|
sqlstring | Yes | One BigQuery Standard SQL SELECT statement |
titlestring | No | Short name for the result, for example "Purchase funnel, October" |
max_rowsinteger | No | Rows to return (default 100) |
query_ga4_events
1 creditFunnels, 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.
| Input | Required | Description |
|---|---|---|
querydaily_events | funnel | paths | cohorts | event_decay | Yes | 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 |
datasetstring | No | GA4 export dataset as project.analytics_<property_id> (default: the only one this workspace allows) |
daysstring | No | Full days ending yesterday (default 28) |
stepsarray | No | Funnel steps as event names in order, for example ["view_item", "add_to_cart", "purchase"] |
eventstring | No | daily_events only: count just this event |
min_countinteger | No | Leave out groups smaller than this (default 10) |
run_attribution_query
1 creditReviewed 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.
| Input | Required | Description |
|---|---|---|
queryattribution | reconciliation | lead_to_deal | cac_roas | Yes | 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 |
daysstring | No | Full days ending yesterday (default 90) |
bychannel | source_medium | campaign | source | No | attribution: channel (default), source_medium or campaign; lead_to_deal: source (default), source_medium, campaign or channel |
eventstring | No | attribution only: the conversion event (default purchase), for example generate_lead |
lookback_daysstring | No | attribution only: days of sessions before a conversion that can get credit (default 30) |
datasetstring | No | attribution only: GA4 export dataset as project.analytics_<property_id> (default: the only one allowed) |
min_countinteger | No | Leave out groups smaller than this (default 5) |
get_crm_data
1 creditLeads, 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.
| Input | Required | Description |
|---|---|---|
bysource | source_medium | campaign | stage | month | week | No | Break down by this (default source_medium) |
daysstring | No | Period in days ending today (default 90), compared with the period before |
kindleads | deals | No | Only uploads of this kind (default both) |
limitinteger | No | Rows to show (default 25) |
get_marketing_overview
1 creditGA4, 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.
| Input | Required | Description |
|---|---|---|
property_idstring | Yes | Numeric GA4 property ID, for example 504011059 |
bychannel | campaign | No | One row per source / medium (channel, default) or per campaign |
daysstring | No | Period in full days ending yesterday (default 28), compared with the period before |
meta_ad_account_idstring | No | Meta ad account ID to include spend and results (list_meta_ad_accounts shows them) |
google_ads_customer_idstring | No | Google Ads customer ID to include cost and conversions (list_google_ads_accounts shows them) |
sitestring | No | Search Console site to include Google search clicks, for example getinlytics.com |
include_crmboolean | No | Include CRM data uploaded in MarStack (default true when there is some) |
limitinteger | No | Rows to show (default 25) |
get_meta_performance
1 creditSpend, clicks, CTR, CPC, purchases or leads, cost per result and ROAS from Meta Ads, by campaign, ad set or ad.
| Input | Required | Description |
|---|---|---|
ad_account_idstring | Yes | Meta ad account ID, for example 1041197038965845 or act_1041197038965845 (Ads Manager, account dropdown) |
daysstring | No | Period in days (default 30) |
levelcampaign | adset | ad | No | Break the results down by this (default campaign) |
limitinteger | No | Rows to show, highest spend first (default 25) |
get_tracking_plan
FreeThe conversions that matter for your business and where each one must arrive: GA4, Google Ads and Meta.
get_recent_changes
FreeGTM versions published, GA4 key events added or removed, and Google Ads changes, so a sudden drop has a likely cause.
| Input | Required | Description |
|---|---|---|
daysinteger | No | |
platformgtm | ga4 | google_ads | No |
get_google_ads_performance
1 creditCost, clicks, conversions, value and cost per conversion from Google Ads by campaign, ad group, keyword or search term.
| Input | Required | Description |
|---|---|---|
customer_idstring | Yes | |
viewcampaign | ad_group | keyword | search_term | No | |
daysinteger | No | |
limitinteger | No | |
login_customer_idstring | No |
Changes you approve
propose_negative_keywords
FreeProposes negative keywords for search terms that waste budget. Google checks the change first, you approve it, and it can be undone.
| Input | Required | Description |
|---|---|---|
customer_idstring | Yes | Google Ads customer ID, for example 123-456-7890 |
campaign_idstring | Yes | |
keywordsarray | Yes | |
reasonstring | Yes | |
login_customer_idstring | No | Manager account ID, when the account is reached through a manager |
propose_status_change
FreeProposes pausing or enabling a Google Ads campaign, ad group or ad, with an undo.
| Input | Required | Description |
|---|---|---|
customer_idstring | Yes | |
levelcampaign | ad_group | ad | Yes | |
idstring | Yes | Campaign, ad group or ad ID |
ad_group_idstring | No | Needed for an ad |
statusPAUSED | ENABLED | Yes | |
reasonstring | Yes | |
login_customer_idstring | No |
propose_budget_change
FreeProposes a new daily budget, at most 20% up or down per change, and warns when the campaign is still learning.
| Input | Required | Description |
|---|---|---|
customer_idstring | Yes | |
campaign_idstring | Yes | |
new_daily_budgetnumber | Yes | In the account currency |
reasonstring | Yes | |
login_customer_idstring | No |
propose_offline_conversions
FreeProposes sending qualified leads and won deals from your CRM to Google Ads, so bidding learns from revenue, not form fills.
| Input | Required | Description |
|---|---|---|
customer_idstring | Yes | |
conversion_action_idstring | Yes | |
conversionsarray | Yes | |
reasonstring | Yes | |
login_customer_idstring | No |
propose_ga4_annotation
FreeProposes a note on the GA4 timeline, such as "Consent banner changed", so later charts explain themselves.
| Input | Required | Description |
|---|---|---|
property_idstring | Yes | |
datestring | Yes | |
titlestring | Yes | |
descriptionstring | No | |
reasonstring | Yes |
propose_gtm_setup
10 creditsScans 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.
| Input | Required | Description |
|---|---|---|
urlstring | Yes | |
container_idstring | Yes | |
measurement_idstring | No | |
ads_conversion_idstring | No | |
ads_labelstring | No | |
meta_pixel_idstring | No | |
event_namestring | No |
list_pending_changes
FreeShows every proposed change in your workspace and where it stands: waiting, applied, rejected, expired or undone.
| Input | Required | Description |
|---|---|---|
statuspending | applied | rejected | expired | failed | undone | all | No |
Free utilities
marstack_status
FreeConfirms MarStack is connected and shows your plan, credits and connected platforms.
list_ga4_properties
FreeLists every GA4 account and property your connected Google accounts can open, with property IDs.
list_gtm_containers
FreeLists every GTM container you can open, with GTM- IDs, ready for an audit.
list_search_console_sites
FreeLists the Search Console sites you can see and your permission level on each.
list_bigquery_tables
FreeLists the BigQuery datasets you allow MarStack to read and their tables, with the GA4 export shown as one table and its date range.
| Input | Required | Description |
|---|---|---|
datasetstring | No | Dataset as project.dataset, for example my-project.analytics_504011059 |
describe_bigquery_table
FreeShows the columns, types, size and partitioning of a BigQuery table, so queries are written against the real layout.
| Input | Required | Description |
|---|---|---|
tablestring | Yes | Table as project.dataset.table, for example my-project.analytics_504011059.events_* |
get_crm_table_map
FreeGives 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
FreeLists the Meta ad accounts your connected Meta logins can read, with IDs, currency and status.
create_report
FreeTurns any check into a branded report: PDF or Word audit, Excel workbook or PowerPoint deck.
| Input | Required | Description |
|---|---|---|
report_idstring | Yes | Report ID from a MarStack check, for example ms-20261018-101500-ab12 |
formatpdf | docx | xlsx | pptx | html | Yes | pdf or docx = audit document, xlsx = spreadsheet, pptx = presentation, html = web page |
create_analysis_report
FreeTurns 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.
| Input | Required | Description |
|---|---|---|
titlestring | Yes | Report title, for example "Why organic leads fell in October" |
report_idsarray | Yes | Report IDs of the MarStack results the analysis used, most important first |
summarystring | Yes | Two to five sentences: the answer, the key numbers and what to do |
findingsarray | No | Key findings, most important first, each with its number |
actionsarray | No | Recommended actions with expected impact and effort |
caveatsarray | No | Data quality issues and limits of the analysis |
formatxlsx | pdf | docx | pptx | html | Yes | xlsx = spreadsheet with every row as real numbers, pdf or docx = document, pptx = presentation, html = web page |
remember_fact
FreeSaves a lasting fact for your workspace, such as a target CPA or "never pause brand campaigns", after a person confirms it.
| Input | Required | Description |
|---|---|---|
factstring | Yes | |
scopeteam | private | No | |
expires_onstring | No | For time-bound facts, such as a Q4 target |
search_history
FreeFinds past audits, answers, approved changes and platform changes in your workspace by meaning or by exact ID.
| Input | Required | Description |
|---|---|---|
querystring | Yes | |
kindsarray | No | |
limitinteger | No |
search_knowledge
FreeFinds MarStack's fix guidance for every audit check, plus the brand guidelines and briefs your workspace uploaded.
| Input | Required | Description |
|---|---|---|
querystring | Yes | |
limitinteger | No |
give_feedback
FreeTell 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.
| Input | Required | Description |
|---|---|---|
report_idstring | Yes | Report ID of the audit, for example ms-20261107-150628-0347 |
checkstring | Yes | Check name as shown in the report, for example "Cross-domain measurement" |
verdictright | wrong | accepted | wording | Yes | |
reasonstring | Yes | Why, in the user's words; required except for "right" |
all_propertiesboolean | No | True to apply it to every property, container or account in the workspace, not only the audited one |
list_google_ads_accounts
FreeLists the Google Ads accounts your Google connection can open, including accounts under a manager account.