Growth — suite dispatcher
This skill routes work; it does not do analysis itself. Given any growth, SEO, AEO, or analytics request, identify the job, open the right member skill(s), and follow them in the right order. Never answer a growth question from memory when a member skill covers it — the skills carry the state and the honesty rules that make an answer trustworthy.
Every output renders through growth-report-format. Open it alongside
whichever member skill is doing the work.
The data layer: agentman-google-search MCP
Every number in this suite comes from one of these calls. Use full tool names.
| Tool | Returns | Auth |
|---|---|---|
mcp__google_search_mcp__gsc_search_analytics |
clicks, impressions, CTR, position by query/page/country/device/date | yes |
mcp__google_search_mcp__gsc_url_inspect |
index status for one URL | yes |
mcp__google_search_mcp__gsc_list_sitemaps |
submitted sitemaps and what Google discovered | yes |
mcp__google_search_mcp__ga4_run_report |
any GA4 dimensions × metrics over a range | yes |
mcp__google_search_mcp__ga4_run_realtime |
live events, for tracking verification | yes |
mcp__google_search_mcp__ga4_run_funnel |
ordered step-over-step funnel | yes |
mcp__google_search_mcp__ga4_key_events |
which events count as conversions | yes |
mcp__google_search_mcp__audit_page |
page structure: title, meta, canonical, schema types, FAQ schema-vs-visible, outward citations | no — any public URL, ours or a competitor's |
Default Agentman targets: GSC sc-domain:agentman.ai, GA4 property 471838641.
For any other property, resolve the target before calling — never assume.
What this suite cannot answer
State the limit rather than reasoning past it. These eight tools do not return:
- SERP composition. Whether a click was lost to a competitor, an AI Overview, or a featured snippet. Position moved or it didn't; why is outside the data. This is the most common question after a traffic drop, and the honest answer is that answering it needs a look at the live SERP or a rank tracker.
- Demand we don't already rank for. GSC impressions only reveal queries Google
already shows us for. "Which topic should we write about next" cannot be
answered from first-party data alone —
seo-keyword-competitor-researchgrounds choices between candidates, but net-new topic selection needs a volume source outside this suite. - Backlinks. So "is this page stuck at position 12 because of content or because of authority" is not decidable here.
- Revenue. Key events are clicks, not dollars. Nothing joins to billing.
When a finding needs one of these, say so plainly instead of substituting a plausible cause.
Provenance rules — inherited by every member skill
- Every number names the call that produced it. A figure without a traceable call does not go in the output.
- Never mix tool outputs.
audit_pagereturns no CTR, impressions, or position;gsc_search_analyticsreturns no page structure. Do not attach a performance claim to a structural finding unless you pulled it in the same run. - A failed or empty call is a finding. Report "the call returned no rows" and stop. Never substitute a remembered or estimated number.
- Never cite a prior report, baseline, or document that is not in context.
- Never invoke a skill you have not confirmed exists.
These exist because the failure has already happened here: a page audit reported correct structural facts, then attached invented impression and CTR figures off by roughly 6× against real Search Console data, and cited a prior report that did not exist. The tool was right; the narrative around it was fabricated.
The ordering rule
Trust → Diagnose → Act → Prove. Verify the measurement layer before treating a number as true; name a cause before shipping a fix; register anything you ship.
Trust is a caveat, not a blocker. Report the number with an (UNVERIFIED) tag
when the audit chain hasn't run recently — do not withhold it. A workflow that
demands three audits before answering "how was last week" sends people to the GA4
UI, and the discipline is lost entirely.
Target resolution (shared by every member skill)
- A named target wins.
- Otherwise the default registered in the skill's
data/binds —example-*files are fictional and never bind. - Otherwise ask — never guess a property.
The six jobs
| Job | The question | Skills, in order |
|---|---|---|
| Trust | Is this number real? | growth-measurement-audit → growth-tracking-verify → analytics-measurement-audit |
| Diagnose | Why did it drop/spike? | growth-report in diagnose posture |
| Research | Where does effort pay best? | seo-opportunity-matrix + seo-keyword-competitor-research |
| Produce | Make the artifact | seo-title-rewrite, aeo-blog-generator, seo-page-audit, seo-schema-audit |
| Prove | Did our change work? | growth-experiment — or the loop already inside seo-title-rewrite for title work |
| Keep watch | The heartbeat | growth-report --cadence monthly (weekly only above the traffic bar) |
Plus the AEO loop: aeo-visibility measures AI-surface presence →
aeo-blog-generator produces for the prompts being lost → shipped work is
registered → aeo-visibility re-measures.
Symptom router
| The user says… | Route to |
|---|---|
| "Is this number real?" / "before we report to the board" | Trust chain, all three layers |
| "Traffic / conversions / signups dropped" | Check measurement first (a dead tag looks identical to a real drop), then growth-report diagnose |
| "What should we work on?" | seo-opportunity-matrix; keyword/headline choices → seo-keyword-competitor-research |
| "This page ranks but nobody clicks" | seo-title-rewrite — run its diagnosis table first; low CTR at good position is usually intent mismatch, which a rewrite cannot fix |
| "Our titles are too long" | seo-page-audit. Do not promise a CTR gain — on this property title length and CTR show no relationship |
| "Write a blog post that AI will cite" | aeo-blog-generator |
| "Are ChatGPT/Perplexity citing us?" | aeo-visibility |
| "Audit the site" | seo-page-audit; structured data → seo-schema-audit |
| "Is our FAQ schema valid?" | seo-schema-audit — one audit_page call answers the visibility half |
| "Check a competitor's page" | audit_page directly — no auth needed |
| "We shipped X — did it work?" | growth-experiment (only if pre-registered; retroactive registration is refused) |
| "Weekly/monthly report" / "how are we doing" | growth-report; it picks cadence from traffic |
| "Why did we lose that ranking?" | growth-report for the movement, then say plainly that SERP composition is outside this data |
Multi-skill playbooks
Onboard a new property:
growth-measurement-audit— inventory the measurement layer, write the registrygrowth-tracking-verify— fire the key flows, confirm arrivalseo-opportunity-matrix— first ranked opportunity listgrowth-report --cadence monthly— start the heartbeat; first run sets baselines
Traffic-drop triage:
- Measurement check — instrumentation death is the first suspect
growth-reportdiagnose: segment by brand/non-brand, device, page, source- Act, and register the fix
Content sprint:
seo-opportunity-matrix+aeo-visibility— pick targetsseo-keyword-competitor-research— ground the choicesaeo-blog-generator/seo-title-rewrite— produce- Register what ships;
growth-reportpicks up the movement
What this skill does not do
- It does not compute, estimate, or recall metrics itself.
- It does not cover paid acquisition, social, email, or lifecycle.
- Deprecated members (
seo-weekly-report,traffic-acquisition-analysis) are never routed to.