Production-ready MCP server for Google Tag Manager API v2 with support for GA4, server-side GTM, and advanced analytics auditing
Three tools with complete schemas and detailed descriptions. site_pages_list and site_scan_triggers have rich, context-aware descriptions (200+ chars) that guide LLM selection and explain prerequisites. Schemas are well-formed with proper types and constraints. However, enable_tool_group lacks depth, its description is functional but generic, and parameter descriptions are minimal. No error handling guidance visible (e.g., what happens if a tool group is unavailable, or if scanning fails). Output schemas are not documented in the source. Tool composition is sound (each does one thing), but descriptions could better explain failure modes and recovery paths.
Request access to a tool group that is not currently visible. Groups include gtm-write (creating and editing GTM tags, triggers and variables), gtm-admin (workspaces, versions, publishing, environments and permissions), server-side (server-side GTM: clients, transformations, zones, templates), ga4-read (reading GA4 configuration and report data), ga4-write (changing GA4 Admin configuration), and audit (auditing and exporting a container).
List the pages of a public website WITHOUT opening a browser, by reading its sitemap and falling back to a fast link crawl. Cheap and quick. Use it before site_scan_triggers when the user names a site but not which pages matter, so they can pick the few worth scanning. READ sitemapStatus before saying anything about a sitemap: "none" means the site published none, "unreachable" means it would not answer and absence is NOT established.
Open a public website in a real browser and read what is actually on its pages: forms (with the provider detected), buttons and CTAs, mailto:/tel: links, downloads, outbound links and embedded video. Returns, for each thing worth tracking, the GA4 event and the EXACT GTM trigger conditions to fire it on, chosen from the real id, class, href or text on the page, plus ready-to-send arguments for create_gtm_tracking_tag. USE THIS BEFORE BUILDING ANY CLICK OR FORM TRIGGER FOR A SITE YOU HAVE NOT READ. A trigger built on a guessed class or form id is accepted by GTM, looks correct, and never fires. It scans the live public site, not the GTM container, so it needs no Google access and changes nothing. Keep the page count small; it opens a browser per page.
enable_tool_group description lacks context and recovery guidance. Does not explain what happens if a group is already enabled, unavailable, or requires additional permissions. LLM cannot infer failure modes.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does site_pages_list return? Is it a list of URLs, objects with metadata?). Breaks tool chaining.
No error handling guidance in tool descriptions. What should the LLM do if site_scan_triggers times out, or if a page is unreachable? No recovery paths documented.
site_scan_triggers description mentions 'ready-to-send arguments for create_gtm_tracking_tag' but that tool is not visible in this server. Broken reference suggests incomplete tool composition or missing tool registration.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
enable_tool_group enum values (gtm-write, gtm-admin, etc.) are not explained. LLM cannot infer which group to request without external knowledge. Add brief descriptions of each group's scope.