Docs

Written agent-first: connect the MCP server, then paste this page’s URL into your agent. Everything below is meant to be read by the model doing the work.

What AgentGrown does

Your agent already knows the repo. What it cannot see is the outside: which queries Google shows the site for, which pages are gaining or losing clicks, what visitors do after they land, and whether a keyword is worth a page at all. AgentGrown syncs your Google Search Console and GA4 data into its own store and serves it over a remote MCP server, with live passthroughs to Google for anything not stored and keyword-demand lookups for anything not yet ranking. The agent asks questions; the answers come back as tables it can act on.

Getting started

1. Sign in with Google at agentgrown.com. One consent grants read-only access to Search Console and Analytics for the Google account you choose. No password, no card.

2. Add your site. Type the domain. AgentGrown detects the matching Search Console and GA4 properties and starts syncing the last 180 days; the first numbers arrive within a couple of minutes. If the properties live under a different Google account, attach it from Connect.

3. Connect your agent. Claude Code:

$ claude mcp add --transport http agentgrown https://agentgrown.com/mcp

Upgrading from the old npx agentgrown mcp setup? Remove that entry first: claude mcp remove agentgrown -s local, then run the command above.

Claude.ai, Cursor, ChatGPT, and any other client that supports remote MCP servers: add https://agentgrown.com/mcp as a remote MCP server and sign in with Google when prompted. The consent screen lets you scope the connection to one site or the whole account, and you can revoke it from Connect.

CI and headless agents: create an API key on Connect and send it as a bearer token. In Claude Code, keep the secret in the environment as AGENTGROWN_API_KEY and reference it from .mcp.json:

{ "mcpServers": { "agentgrown": { "type": "http", "url": "https://agentgrown.com/mcp", "headers": { "Authorization": "Bearer ${AGENTGROWN_API_KEY}" } } } }

A static header disables the OAuth fallback, so use keys only where a browser sign-in is not possible.

Optional, free, no account: npx agentgrown init installs a local SEO-audit skill (titles, metadata, Open Graph, schema.org, sitemap, robots.txt, canonicals, internal links) into the repo for Claude Code, Cursor, or any AGENTS.md agent.

For the agent: how to work

Start every session with seo_checkin: it returns the last 28 days against the prior 28, the top queries and pages with deltas, the biggest movers, GA4 organic sessions when synced, the site’s saved notes, and the dates the data runs through. Answer questions from stored data with gsc_query and ga4_query; before editing a page, query it by page so a title or H1 rewrite keeps the queries it already wins. Reach for gsc_live and ga4_live only when a question needs a dimension that is not stored (country, device, search appearance, any GA4 dimension by name). Check demand with the keyword tools before building a page; they draw from a free monthly allowance that every response reports, and repeats are cached. When you learn something durable about the site, save it with site_notes.

There is no ticket queue and nothing to mark shipped. You ask, decide with evidence, and ship in the repo as usual. The check-in shows what moved.

Tools

Every tool takes an optional site (domain or id); omit it when the connection is scoped to one site. Output is text: a header line with the domain, date range and data-through date, then markdown tables. Default 50 rows, hard cap 300, with a Rows: N of M shown footer. Errors come back as text.

Orient
seo_checkin28-day property totals vs the prior 28 days (matches the Search Console UI), top 10 queries and pages with deltas, biggest movers, GA4 organic sessions if synced, notes, data-through dates and sync state, allowance. Call first in any session. Inputs: site?
Stored data
gsc_queryFlexible aggregate over stored Search Console rows. Inputs: dimensions up to 3 of date, week, month, query, page; metrics; last_days (up to 490) or date_range; compare_previous; up to 5 filters on query or page (contains, not_contains, equals, starts_with, ends_with); order_by, order, limit.
ga4_queryThe same shape over stored GA4 rows. Inputs: dimensions from date, week, month, landing_page, channel_group, source; metrics including engagement_rate; organic_only (default true); filters, ordering, limit.
Live from Google
gsc_livePassthrough to the Search Console query API with the owner’s token, for country, device, search appearance, Discover and News, regex filters, and fresh (non-final) data. Inputs: start_date, end_date, up to 4 dimensions, type, dimension_filter_groups, aggregation_type, data_state (default all), row_limit, start_row.
ga4_livePassthrough to GA4 runReport. Inputs: dimensions[], metrics[], date_ranges[], dimension_filter, metric_filter, order_bys, limit, offset. The tool description lists the common dimension and metric names.
Demand
keyword_ideasKeyword ideas with search volume, CPC and competition for 1–20 seeds, top 100 by volume, joined with the queries the site already ranks for. 1 lookup; repeats cached 30 days.
keyword_volumeVolume, CPC and competition for 1–1,000 exact keywords; also stored against the site’s matching queries. 1 lookup per 1,000; cached.
keywords_for_siteKeywords a domain or URL ranks for. Inputs: target? (defaults to the site’s domain). 1 lookup; cached.
Account
site_notesRead the site’s durable notes, or append one with add. Notes return in every check-in.
list_sitesDomains, ids and data-through dates for every site on the account. Account-scoped connections only.

Data notes

Search Console final data lags 2–3 days; the header of every response says which date the data runs through, and whether a backfill is still in progress. Property totals (clicks, impressions, CTR, position) come from daily property rows and match the Search Console UI for the same dates. Query-level and page-level rows exclude the queries Google anonymizes, so their sums run lower than the property totals by design. 180 days are synced when a site is added and refreshed daily; the full 16 months Google retains can be backfilled on request from the site page. GA4 rows are organic-only by default and cover landing page, channel group and source.

Free allowance

Stored-data and live tools are free without limit. The three demand tools call a paid keyword-data provider, so each account gets 30 lookups per calendar month at no charge; the footer of every demand response shows lookups used, lookups remaining, and the reset date, and repeats of the same request within 30 days are served from cache and marked (cached, free). Usage is listed at Usage.

Privacy

Sign-in requests read-only scopes only: Search Console read and Analytics read, plus your email address for the account. Your Google data is used to answer your own agent’s questions and to show sync status in your dashboard; it is never sold, never used for advertising, and never shared with other customers. Tokens are stored encrypted. Disconnect the Google account, revoke an agent, or delete a key at any time at Connect. Details are in the Privacy Policy.

Questions a human should answer: support@agentgrown.com.