marketing_utilities
Free marketing utilities: no Supermetrics subscription or connected data source needed.
Actions:
utm_build: tag each of the urls with source/medium/campaign/term/content, correctly encoded (macros like {campaignid} kept), validated against your team's conventions.
utm_parse: check the urls against your team's conventions and GA4 channel rules. For one campaign used in several places (an event's booth QR code, printed cards, follow-up email, social post), build one link per placement with a different utm_content, so reports show which placement worked. utm_build and utm_parse return suggested_url (the link with casing/separator fixed), fixed (what changed in it) and unresolved (issues that need a decision, e.g. an unapproved source). Show suggested_url and fixed in the same reply as the check, then ask only about unresolved; never wait to be asked for a fixed link.
pagespeed_check: PageSpeed Insights for up to 10 urls (run in parallel; 30s-2min): scores, lab and field vitals, top fixes; detail="full" for every finding. Returns within ~45s; if checks are still running it returns status="running" and a job_id: poll with {"action":"pagespeed_check","job_id":...} about every 30s. Results are cached for 24h (cached=true, checked_at); pass refresh=true only after the page has changed.
link_check: follow up to 50 urls through redirects; do UTM and click-id params (gclid, fbclid...) reach the landing page, and at which hop are they lost. Also broken pages, loops, tagging mistakes.
web_vitals_trend: ~6 months of real-user LCP/INP/CLS/FCP/TTFB for up to 50 sites (bare domain) or pages.
safety_check: up to 50 urls, domains or email addresses (e.g. a cold-pitch sender) and every host they redirect through: Web Risk malware/phishing flags, invalid or expiring certificates, domains expiring soon or registered in the last 30 days, and senders with no working website.
link_preview: how up to 50 urls render when shared on LinkedIn, Facebook, X and Slack; flags missing or small og:image, missing description, truncated titles.
email_dns: SPF, DKIM, DMARC, MX and BIMI for up to 50 domains (urls may be domains, emails or URLs).
char_limits: exact lengths of up to 200 texts against Google Ads, Meta, LinkedIn and X limits (counted as each platform counts). Use it whenever copy must fit a limit; do not count characters yourself. Google asset fields (path, long_headline, business_name, callout, sitelink_text, sitelink_description) are checked only when named in field.
Results: every result has input (as sent), url, status (ok|warning|critical|unknown) and findings[] of {code, severity, message, suggestion?, ...extras}; unknown results carry error {code, message} (e.g. quota_exhausted, daily_limit, no_data, url_throttled). Each batch has a summary of counts.
UTM conventions come from business context (tags='utm-conventions'). A JSON object is enforced; every key is optional; lists are exact, case-sensitive matches: {"approved_sources":[...],"approved_mediums":[...],"blocklist":{"utm_campaign":["test"]}, "regex":{"utm_campaign":"\d{4}"},"max_length":{"utm_campaign":60},"casing":"lowercase"|"as_is", "separator":"-"|"_","require_all_core":true} When utm_source is a known ad network (google, bing, facebook/instagram, tiktok, linkedin, snapchat, pinterest), utm_build returns network {medium, campaign_macro, id_macro, click_id} and both actions flag macros written in another network's syntax, which that network would leave unfilled. utm results report conventions_source: team (JSON enforced), team_free_text (returned as team_conventions for you to apply) or defaults (lowercase, hyphens).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>"
},
"name": "marketing_utilities"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | utm_term value (utm_build) | |
| urls | No | URLs to act on (every action except char_limits). Max 10 for pagespeed_check, 50 otherwise. web_vitals_trend: a bare domain = whole site. email_dns: domains, e.g. example.com | |
| field | No | char_limits: check only this field (e.g. rsa_headline for Google headlines, primary_text for Meta, post for X). Default: every field of each platform | |
| texts | No | char_limits: the headlines/captions to measure | |
| action | Yes | utm_build (tag urls), utm_parse (check urls), pagespeed_check, link_check (tracking survives redirects), web_vitals_trend (real-user history), safety_check (malware/phishing, certificate and domain expiry), link_preview (how a shared link renders), email_dns (SPF/DKIM/DMARC), char_limits (ad/social copy lengths) | |
| detail | No | pagespeed_check: summary (scores, vitals, top 3 fixes) or full (all findings) | |
| job_id | No | pagespeed_check: poll a check that was still running (returned when it took over 45s) | |
| medium | No | utm_medium value (utm_build) | |
| source | No | utm_source value (utm_build) | |
| content | No | utm_content value (utm_build) | |
| refresh | No | pagespeed_check: ignore cached results (kept 24h) and re-test; use only after the page changed | |
| campaign | No | utm_campaign value (utm_build) | |
| strategy | No | pagespeed_check device: MOBILE or DESKTOP | |
| platforms | No | char_limits: platforms to check against (default: all) | |
| dkim_selector | No | email_dns: your DKIM selector if it is custom (common ones are probed automatically) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | ||
| error | No | ||
| notes | No | ||
| success | Yes | ||
| business_context | No |