Skip to main content
These are the tools the AI agent uses to deliver recurring SEO work — tracking real rankings, auditing pages, mining Search Console, and shipping tracking tags. They pair with the Standing Playbooks that run them on a schedule and the client report that presents the results.

Live rank tracker

seo_track_keyword starts tracking a keyword’s position for a target domain. It creates the tracked row the daily ranking worker checks and queues the first check immediately — rank data arrives within minutes, not tomorrow.
  • Required: keyword and target_domain.
  • search_engine: google (default), bing, or the AI engines — ai_overview, chatgpt, perplexity, claude, gemini — which track citation mentions rather than blue-link positions.
  • ranking_type: "local" with business_name tracks the local pack position; set location_name to the city that matters (for example “Dallas, TX”).
  • Optional: target_url (the page you expect to rank), device_type (desktop default), tracking_frequency (daily default, or weekly), target_rank (a goal like top 3), tags, and location_code / language_code.
  • Keywords tracking the same domain group together automatically; pass goal_id only to subdivide tracking within a domain.
seo_tracked_keywords_list shows what’s being tracked and seo_tracked_keyword_delete stops a keyword. Reading results — seo_rankings_list has two views:

Page intelligence

The analysis suite (and where its data comes from)

Five analysis reads are computed by a weekly analysis pass (Sundays), not on demand. Each is empty — with a note saying so — until its data source is connected and the first weekly run completes. The honest data-source notes matter:

Search Console: the full scope

The seo_gsc_* family covers everything Google’s Search Console API exposes:
  • Discovery: seo_gsc_list_sites (verified properties).
  • Reports: seo_gsc_search_queries and seo_gsc_top_pages for the quick reads; seo_gsc_search_analytics is the canonical query — any combination of date / query / page / country / device / searchAppearance dimensions with filters (equals, contains, regex), up to 25,000 rows per call; seo_gsc_time_series for daily trends (“did my change help?” — overlay the deploy date); seo_gsc_period_comparison joins two periods and returns winners, losers, and rank climbers/droppers.
  • Indexing: seo_gsc_inspect_url runs URL Inspection (indexability, mobile usability, rich results — note Google’s public API only inspects the indexed snapshot; there is no live-test equivalent). seo_gsc_index_coverage is the best-available substitute for the Index Coverage report — Google exposes no bulk endpoint, so it fans out URL Inspection over a list you supply (up to 50 URLs per call) and buckets the results by coverage state.
  • Sitemaps: seo_gsc_list_sitemaps and seo_gsc_get_sitemap (per-sitemap errors and warnings — the read to run when submitted exceeds indexed), seo_gsc_submit_sitemap (idempotent; run after a deploy that added indexable URLs), and seo_gsc_delete_sitemap (for structure migrations).
Sitemap writes need the write scope. Search Console connections authorized before late August 2026 were granted read-only access, which cannot submit or delete sitemaps. If seo_gsc_submit_sitemap or seo_gsc_delete_sitemap fails with a permissions error, reconnect the Search Console connection — the reconnect grants the updated write scope. Reads are unaffected.

Google Tag Manager: tag, version, publish

GTM rides the same Google authorization as your Google Analytics connection — one connection covers both. The flow exists to close a specific failure mode: a container whose conversion tags were created but never published records nothing, however complete it looks in GTM.
1

Read the container — seo_gtm_status

Without container_path, it lists the GTM accounts and containers the connection can see. With one, it returns the publish preview: the default workspace’s pending changes, the draft-vs-live tag split (draft-only tags are not serving), the currently live version, and a loud warning when the container has never been published.
2

Create the tag — seo_gtm_tag_create

Creates a workspace draft only — nothing serves yet, so there’s no confirm gate. tag_type is ga4_event (needs measurement_id + event_name) or ads_conversion (needs conversion_id + conversion_label from the Ads conversion action’s tag setup). Fire it from existing triggers (firing_trigger_ids) or create one: create_trigger: "all_pages", or "page_path" with trigger_page_path — the page-path trigger defaults to both a pageview and a history-change trigger, because on a modern site either one alone has a silent blind spot.
3

Version it — seo_gtm_version_create

Snapshots the workspace into a container version. Still not live. Creating a version consumes the workspace (GTM opens a fresh one), and the call fails loudly on GTM sync problems instead of returning a version that doesn’t exist.
4

Publish — seo_gtm_publish

The step that changes the client’s live site: every tag in the version starts serving to real visitors immediately. It’s confirm-gated — the first call returns a preview (the version’s tags, what’s currently live, and any workspace changes that are not in this version) with requires_confirm: true; repeat the identical call with confirm: true to publish.
Version creation and publishing require the Tag Manager publish scopes, requested on new connections since late August 2026. A Google Analytics connection authorized before then returns a reconnect error naming the fix — reconnect Google Analytics and retry.