Skip to main content
Numbered recipes for the questions people ask most. Your client chains the tools for you — the sequences below show what happens under the hood so you can steer the agent when needed. Several recipes also exist as server prompts — see prompts and resources.

1. First session: check auth and pick an account

Tools: auth_status → list_accounts → set_account. Or invoke the explore prompt.
  1. Call auth_status to confirm the session: user, accounts, current account, and access-token expiry. A “not authenticated” result means the OAuth connection needs a reconnect — reconnect or re-add the server.
  2. Call list_accounts to see every account available to the signed-in user and which one is current.
  3. If the wrong account is current, call set_account with the right accountId. All later read calls then use it.
Ask: “Which AI Growth Agent account am I using? Switch to Acme Corp.”

2. Weekly wins digest

Tools: reporting_get_account_overview → reporting_get_available_dates → reporting_get_wins → summarize. Or invoke the wins-digest prompt.
  1. Call reporting_get_account_overview for the current state of the account — visibility rate, most-cited domains, and most-mentioned brands — so the digest opens with where the account stands. Each list is a top 10 plus your own domain or brand as a pinned reference row: read rank and isPinnedReference rather than array position, and quote each count against its own total (topCitedDomainsTotal or topMentionedBrandsTotal). See reading counts and ranks correctly.
  2. Call reporting_get_available_dates to get the snapshot dates for the current account.
  3. Call reporting_get_wins with startDate set to the snapshot closest to one week ago and endDate set to the most recent snapshot.
  4. Summarize the rankingWins, mentionWins, and positionMovements into a digest: new citations, new AI Overview brand mentions, and the biggest position improvements (positive organicDelta / aiOverviewDelta).
Ask: “Summarize my wins from the past week.”

3. AI Overview visibility check

Tools: reporting_get_account_overview → reporting_get_trend → reporting_get_wins → content_planner_list_seed_terms
  1. Call reporting_get_account_overview to establish the baseline: current visibility rate with the period comparison, and where the account stands in the most-cited domains list. That list is the top 10 plus your own domain pinned for reference — read rank and isPinnedReference, never array position, and read a pinned row with count: 0 as not cited at all.
  2. Call reporting_get_trend (default ranking mode, rate y-axis) to see whether visibility is rising or falling over the period — read the rate against universe size, as in explain a trend change.
  3. Call reporting_get_wins between the period’s first and last snapshots to list the new AI Overview citations and brand mentions behind the trend.
  4. Call content_planner_list_seed_terms (default google-ranking mode) to spot campaign-tier seed terms where you are not yet in the AI Overview — candidates for the next content push. Its default scope is campaign + standard, matching the trend’s universe, so name that scope whenever you quote a universe size.
Ask: “How is my AI Overview visibility trending, and where are the gaps?“

4. Content pipeline: from seed terms to queries

Tools: content_planner_list_seed_terms → content_planner_list_questions
  1. Call content_planner_list_seed_terms with priorityTier: ["campaign"] to get the campaign-tier seed terms and their aggregate metrics. Omit priorityTier for the default scope — campaign + standard, the tracked universe — and check tierScope in the payload to see what came back.
  2. Call content_planner_list_questions with the seedId of a chosen term to list the queries (API: questions) under it, including per-query search intelligence (organic and AI Overview positions, brand mentions).
  3. Use the queries with no AI Overview presence as the brief for the next articles.
Ask: “List my campaign seed terms, then show the queries under the top one.”

5. Compare against a competitor

Tools: content_planner_list_seed_terms / content_planner_list_questions with referenceUrl / referenceBrand → reporting_get_top_entities → reporting_get_urls You can view your search universe from a competitor’s perspective — see competitor views for how the filters work.
  1. Call content_planner_list_seed_terms with a competitor domain as referenceUrl to see which seed terms and queries they rank for. For mention metrics, pass the competitor’s brand as referenceBrand. Drill into a term with content_planner_list_questions using the same filters.
  2. Call reporting_get_top_entities with mode: "ranking" to see where the competitor stands among the most-cited domains, then with mode: "mention" to compare their brand against the most-mentioned brands. entities is the top 10 plus your own domain or brand pinned for reference, so read each row’s rank and isPinnedReference — a competitor that is not in the list is outside the top 10, and the payload says nothing more about where. Quote every count against total, the queries analyzed for the requested mode. Start from reporting_get_account_overview if you want both lists and your own standing in one call.
  3. Call reporting_get_urls with search set to the competitor’s domain (substring match on the host), or host in url view for an exact match, to drill into the specific competitor URLs getting cited across your universe.
Steps 2 and 3 are Google-only. For the ChatGPT side of the comparison, call content_planner_list_seed_terms with mode: "chatgpt-ranking" or mode: "chatgpt-mentions" — the response’s domainCounts and brandCounts are the aggregate most-cited domains and most-mentioned brands for that mode, so you can place the competitor (and yourself) in the ChatGPT mix. These two count differently from the reporting lists: they are a top-50 list, each count is the number of queries the domain or brand appears in (at most once per query), and neither pins an own-entity row — so your own domain or brand may simply be absent. Treat ChatGPT as a secondary read — volatile and biased toward training data: report significant citations or mentions, never alarm on low rates. Ask: “Which of my queries does competitor.com rank for, and where do they sit among the most-cited domains?“

6. Explain a trend change

Tools: reporting_get_trend → content_planner_list_seed_terms. Or invoke the trend-explanation prompt. Rate changes only mean something against the size of your search universe — see reading trends for the full caveat.
  1. Call reporting_get_trend and read the rate movement alongside comparison.universe and the per-snapshot totalQuestions values.
  2. Tell universe growth from genuine decline: a rate dip that follows universe growth (new seed terms or queries added) means the denominator grew — that is expansion, not decline. A rate change on a stable universe is a genuine performance signal.
  3. Call content_planner_list_seed_terms sorted by publishedCount to check the publishing density of the new terms. Compare like with like: its default scope is campaign + standard, the same universe the trend measures, so the two sizes reconcile. A term moved into campaign or standard from backlog enters the universe and grows the denominator. Recently added terms start with little published content and naturally rank at lower rates until coverage builds — see publishing density.
Ask: “My citation rate dipped 4 points — is that a real decline?“

7. Search Console deep dive

Tools: gsc_get_context → gsc_get_overview → gsc_export_dataset → gsc_query_export. Or invoke the gsc-content-deep-dive prompt. Requires GSC access for the shared service account — see the prerequisite in Google Search Console (GSC).
  1. Call gsc_get_context to confirm the resolved GSC properties and the segmentation strategy — do this first, or whenever data looks wrong.
  2. Call gsc_get_overview for property-frame totals and the daily trend, split AGA content vs main domain. Note meta.incompleteDays — the trailing days that will revise upward.
  3. Call gsc_export_dataset with dimensions: ["page", "query"] (plus any page filter) to pull the full dataset — the response’s downloadUrl downloads the raw file. Check meta.complete / meta.coverageRatio: capped pulls are auto-partitioned and reconciled against an uncapped denominator, so this tells you whether the file covers the named universe.
  4. Call gsc_query_export repeatedly with different groupBy / dimensionFilters — local slices, no new API calls. Use row tags.queryShape to split AI-shaped from human-shaped queries (never blend them into one CTR), tags.pageClass to exclude tenant_subdomain and cms_origin hosts, and tags.isWebStory to separate Web Story twins from article URLs.
Ask: “Which of my articles get impressions but no clicks, and how much of my search traffic comes from AI-shaped queries?“

8. Measure AGA content’s search impact

Tools: gsc_get_context → gsc_get_overview → gsc_compare_periods → articles_search + gsc_query_analytics → gsc_inspect_url / gsc_list_sitemaps. Or invoke the gsc-content-deep-dive prompt. The full evaluation path — see evaluating AGA content performance for the stance behind it.
  1. Call gsc_get_context and read the maturity block — how long the account has been publishing decides the comparison cadence.
  2. Call gsc_get_overview. Lead with impressions (the AI-visibility signal) and AGA’s share of the property’s impressions, reported as measured (it matches the GSC UI); clicks are the human-traffic read. State the interpretationHints as findings.
  3. Call gsc_compare_periods with the cadence that matches maturity: periodPreset: "wow" in the first ~8 weeks (which pages are picking up?), "mom" or "qoq" after. Read impressionGrowthShare (AI visibility) alongside growthShare (human traffic).
  4. For a new account, check indexing coverage: call articles_search with statuses: ["published"], then gsc_query_analytics with dimensions: ["page"] (or slice an export), and join on the slug. The share of published slugs with zero impressions is the coverage gap; long-published zero-impression pages are retire candidates.
  5. Diagnose any suspicious page with gsc_inspect_url (indexing verdict, canonical form) and confirm sitemap pickup with gsc_list_sitemaps.
Ask: “How much of my search visibility comes from AGA content, and is every published page getting picked up?”

See also