MCP App Store
by KeenEthics
Developer Tools
GSC Wizard icon

GSC Wizard

by GSC Wizard - 11 Internet

Overview

GSC Wizard connects ChatGPT to your own Google Search Console properties so you can analyze SEO performance in plain language. Ask for a performance summary, your top queries and pages, ranking changes between two periods, content decay, keyword cannibalization, CTR-versus-position curves, or a full SEO report, and get a finished answer back. Instead of streaming thousands of raw rows into the model, every analysis is computed server-side against a data warehouse, so results are fast, accurate, and token-efficient. You can also list and inspect properties, run Google's URL Inspection, track indexing, manage topic clusters and content groups, and submit URLs to IndexNow. It also reports on your own linked Google Analytics 4 properties: traffic overviews, dimension breakdowns, ecommerce, key events (conversions), traffic referred by AI assistants such as ChatGPT and Perplexity, and blended Search Console + GA4 landing-page views. Summary tools render interactive cards and tables directly in ChatGPT. All access is scoped to your own account through Google sign-in.

Tools

add_migration_redirects

ChatGPT
Saves redirect mappings (old URL -> new URL) for a site migration, tied to the source property A and target property B they move traffic between. These back the Migration Compare workflow: use compare_migration for the before/after performance read, and these mappings to record which old URL became which new one. Pass label to keep several migrations apart on one account. Rows are APPENDED, never deduplicated against what is already stored, so re-sending the same list stores it twice; clear a set first with delete_migration_redirects if you are re-uploading.

add_site

ChatGPT
Registers a GSC property the user already has access to (in Google Search Console) inside GSC Wizard. The property URL must appear in Search Console — it is not provisioned by this call. Pass a URL prefix (https://example.com/) or a domain property (sc-domain:example.com).

add_tracked_urls

ChatGPT
Adds URLs to the GSC Wizard Indexing Tracker for a property, creating the tracker if it does not exist yet. Each URL must belong to the property's domain. Enforces the 1,800-URL-per-tracker cap (URLs over the cap are skipped and reported). Newly added URLs start as "pending"; call check_tracked_url_now to inspect them immediately, or wait for the app's hourly cron.

analyze_cannibalization

ChatGPT
Finds queries where multiple pages of the property compete for the same search, ranked by a cannibalization score (Shannon entropy over the pages’ impressions — higher means impressions split more evenly across pages, i.e. worse cannibalization). Served from the GSC Wizard ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

analyze_ctr_curve

ChatGPT
Builds the property’s actual click-through-rate curve bucketed by average position (1-20) and compares each bucket to one or more industry benchmarks. Available sources: awr (Advanced Web Ranking 2026), firstPageSage (First Page Sage 2026), sistrix (Sistrix 2024), backlinko (Backlinko 2019), or "all" (default) to compare against every source at once. Each bucket reports a benchmarks map (expected CTR per source) and a deltas map (actual minus expected; negative = underperforming); when a single source is selected the bucket also carries flat expectedCtr/ctrDelta. CTR values are 0-1 ratios. Served from the GSC Wizard ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

analyze_query_shapes

ChatGPT
Classifies a property's queries by SHAPE to surface the fingerprints of AI Overviews / AI Mode fan-out traffic (the app's Query Analysis report). Buckets: reply artefacts ("yes", "show me"), pivot follow-ups ("what about gemini"), conversational questions, LLM tracker probes, agent harnesses, pasted strings, long uncategorised, and conventional keywords. Returns per-bucket query/click/impression counts and shares, zero-click counts, average position, and top example queries, plus an aiShaped roll-up of the conversational buckets. Heuristic pattern matching in 27 languages: it judges how a query LOOKS, not what the searcher meant, so treat single rows as evidence rather than proof. Reads the ClickHouse warehouse when available, else the live Search Console API. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

analyze_sampling_impact

ChatGPT
Estimates how much click/impression data Google Search Console hides through anonymization (privacy-threshold row dropping) for a property over a date range. Compares the per-day totals against the summed top query rows and top page rows; the gap is the lost share. On the live API path this reveals true GSC sampling. On the ClickHouse warehouse path the data is unsampled, so the reported loss reflects only top-N row truncation (see the note field). The response dataSource says which path served the request. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

audit_onpage_seo

ChatGPT
Crawls a property's pages and runs a technical on-page/SEO audit per URL: HTTP status, indexability (noindex / canonicalised), title & meta-description length, H1s, word count, canonical, internal/external links, image alt coverage, structured data, Open Graph, viewport, hreflang, and a scored list of issues by severity. Pass explicit urls, or omit them to audit the top pages by Search Console impressions. URLs must belong to the property. Fetches each page live and stops after about 50 seconds: when truncated is true, the pages in notAudited were not fetched, so call again with urls set to that list to finish.

breakdown_by_path

ChatGPT
Aggregates page-level performance into a subdomain and first-folder breakdown. Each page URL is parsed and grouped by its host plus the first depth path segments (depth 1 -> /folder, depth 2 -> /folder/subfolder, etc.). Returns per-group clicks, impressions, CTR, impression-weighted average position, and the number of distinct pages. Served from the ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Reads up to 25,000 page rows before grouping. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

bulk_inspect_urls

ChatGPT
Runs the Google URL Inspection API against a list of URLs serially, persisting each result to GSC Wizard's inspection history. Google caps inspections at 2,000 per property per day (shared across the UI and every MCP call); this tool counts each inspection against that cap and stops once it is reached, returning the URLs it could not get to. Call get_inspection_quota first if you want to see remaining headroom. Sequential to avoid hitting the per-second quota.

check_tracked_url_now

ChatGPT
Triggers an immediate Google URL Inspection for up to 10 tracked URLs in the GSC Wizard Indexing Tracker, updating each URL's status, warnings, and append-only history. Counts against the daily 2,000-inspection/property quota — if the quota is exhausted the call returns a quota message instead of running. Use sparingly; the app's hourly cron checks tracked URLs automatically. This is a server-side write and is audit-logged.

compare_migration

ChatGPT
Before/after Search Console comparison for a site migration or restructure. Three modes: "cross-property" compares two GSC properties (old domain vs new); "two-urls" compares two URL-prefix sections within one property; "regex" splits one property by two regexes. Returns the daily clicks/impressions trend for each side, per-side totals, and the query and page winners/losers by click delta. Without goLiveDate both sides use the same date window (startDate/endDate): A vs B over one period. With goLiveDate it becomes a before/after comparison around the launch: side A is read over the before window and side B over the after window, placed by windowStrategy ("recent", the default: the last windowDays settled days vs the windowDays days before go-live; "from-go-live": the first windowDays days from go-live vs the windowDays days before it; "full": the 90 days before go-live vs everything since). windowDays defaults to 28; yoyBaseline compares with the same weeks a year earlier instead. The go-live result adds windows (dates, days since go-live, warnings), recoveryPct (B clicks per day as a % of A clicks per day; null under 10 baseline clicks) and trend buckets (lost / declined / stable / improved / new) for queries and pages; pages of two properties are joined by path. For the full health verdict (risk score, redirect checks, recommendations, projected recovery) use get_migration_health. Reads the ClickHouse warehouse when available, else the live Search Console API. Query and page lists cover at most the top 25,000 rows by clicks per side; truncated and truncationNote say when a cap was reached. Regexes are capped at 2,000 characters and must not nest quantifiers (for example (a+)+). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

create_annotation

ChatGPT
Adds a chart annotation. Scope is "account" by default (visible only to the user); pass siteUrl to scope the annotation to a single property. Platform-wide annotations are reserved for system events and cannot be created via this tool.

create_content_group

ChatGPT
Creates a content group partition on a property. Rules are an array of { type, value } objects (prefix / contains / regex / equals) that match URLs into the group. Group names are unique per site.

create_gsc_property

ChatGPT
Creates one or more URL-prefix properties in Google Search Console (Webmasters sites.add) and registers them in GSC Wizard. Use this to add folder-level properties (e.g. https://example.com/blog/) that do not yet exist in Search Console — they are auto-verified if the connected Google account owns the parent domain property. parentSiteUrl is an existing GSC Wizard property whose Google account has access; the new properties inherit it. For properties that already exist in GSC, use add_site instead.

create_report_client

ChatGPT
Adds a client contact (an email address, plus an optional name) that shareable reports can then be granted to with manage_report_access. Adding a client does NOT email them and does not give them access to anything on its own; it only creates the contact. Emails are stored lowercased and must be unique per account; adding an address that already exists returns the existing client rather than failing.

create_saved_filter

ChatGPT
Stores a filter preset against a property. The filters payload mirrors the JSON shape used by the dashboard filter UI; treat it as an opaque blob unless you have explicit knowledge of the schema.

create_shared_report

ChatGPT
Saves a table of rows as a shareable GSC Wizard report. Pass the rows you got from another tool (e.g. query_top_queries, get_content_group_performance) plus the columns describing which fields to show; the report renders at view time, so the stored payload stays small. THIS IS STEP 1 OF 3: the returned URL opens for NOBODY until access is granted, not even for the account owner, because the viewer is the client portal and requires a client login. To actually share it: (2) create_report_client with the recipient's email, then (3) manage_report_access to grant them the report. Do not hand the URL to anyone before step 3; it will not open. Up to 50 reports per account; delete old ones with delete_shared_report.

create_topic_cluster

ChatGPT
Creates a topic cluster on a property by grouping keywords under a name. Cluster names are unique per property. Keywords are stored as text and matched against GSC queries in the dashboard.

delete_annotation

ChatGPT
Deletes a chart annotation by id. Only annotations the user owns can be removed; platform-scoped annotations cannot be deleted via this tool.

delete_content_group

ChatGPT
Deletes a content group by id. The owning site must belong to the authenticated user.

delete_migration_redirects

ChatGPT
Permanently deletes saved redirect mappings. Narrow the deletion with label and/or the A/B property pair; to delete EVERY mapping on the account you must pass confirmDeleteAll: true, since an unnarrowed delete would also wipe unrelated migrations. Preview exactly what would go with list_migration_redirects using the same filters first.

delete_saved_filter

ChatGPT
Deletes a saved filter preset by id. Only the creating user may delete it.

delete_shared_report

ChatGPT
Permanently deletes a saved shareable report and every client grant on it, breaking the shared link for anyone who still has it. Only reports owned by the authenticated user can be deleted. Find the id with list_shared_reports.

delete_site

ChatGPT
Unregisters a property from GSC Wizard. Cascades to topic clusters, content groups, saved filters, inspections, and annotations scoped to this property. Does NOT remove the property from Google Search Console itself. Pass confirm=true to acknowledge — guards against accidental deletes.

delete_topic_cluster

ChatGPT
Deletes a topic cluster by id. The owning site must belong to the authenticated user.

detect_anomalies

ChatGPT
Flags statistically anomalous days in a property's Search Console series for a chosen metric (clicks, impressions, CTR, or position). Uses a robust Modified Z-score with median absolute deviation and day-of-week baselines (mean absolute deviation when most days are identical, as on a low-traffic property), then scores each spike/drop by severity (critical → info). Days without rows count as zero for clicks and impressions, so a drop to zero (deindexing) is flagged; the 21-day minimum is measured in calendar days from the first day with data. CTR and position use only days with impressions. coverage reports the days analysed and how an empty tail at the end of the window was treated. Good for "did something break / spike on a specific day?". Reads the ClickHouse warehouse when available, else the live Search Console API.

detect_change_points

ChatGPT
Finds the dates where a property's clicks or impressions shifted to a new sustained level (step changes / level shifts), reporting the before vs after average and the % change at each break. Unlike anomaly detection (one-off spikes), this locates durable regime changes: a migration, an algorithm update, a redesign. Each date is the day the shift is strongest (the first day of the new level). Days without rows count as zero, so a drop to zero (deindexing) is a change point; coverage reports how an empty tail at the end of the window was treated. Reads the ClickHouse warehouse when available, else the live Search Console API. When a shift starts from a zero baseline (beforeMean 0) it has no percentage: changePercent is 0 by convention, which does not mean no change; describe it as new traffic from zero using afterMean.

find_decaying_content

ChatGPT
Finds queries or pages losing traffic between a baseline (earlier) period and a recent period, bucketed by severity of click loss (severe > 50%, moderate 20-50%, mild < 20%). Only keys with a meaningful baseline (clicks > 0 and impressions >= minImpressions) are considered. startDate/endDate is the RECENT period; comparisonStartDate/comparisonEndDate is the BASELINE period. For a full period-by-period matrix (clicks/impressions/position per month or week, like the app's Query Decay / Content Decay pages) use get_decay_overview instead. Served from the GSC Wizard ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

find_page_poaching_opportunities

ChatGPT
Finds queries ranking just outside the top positions (between minPosition and maxPosition) and estimates the click upside of pushing them to a target position. The upside is computed from the property's OWN CTR-by-position curve (derived from the same query data), not a broad industry benchmark, so the estimate reflects how this site actually converts impressions at that position. When the property has no data at the target position, falls back to the industry benchmark named by fallbackBenchmark: awr (Advanced Web Ranking 2026, default), firstPageSage (First Page Sage 2026), sistrix (Sistrix 2024), or backlinko (Backlinko 2019). The response reports targetCtr (the expected CTR used) and ctrSource ("own" or the benchmark key). Sorted by potential click gain. Served from the GSC Wizard ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

forecast_traffic

ChatGPT
Projects future Search Console clicks (or impressions) for a property using the app's forecasting model: multiplicative seasonal decomposition (ratio-to-moving-average) plus an auto-selected trendline (linear / polynomial / log / exponential / power by best R-squared), re-seasonalised for each future period. Optionally applies a manual growth rate and derives revenue from a conversion rate and average order value. History needs: weekly needs 13 complete weeks and monthly 6 complete months, after the first and last (possibly partial) period are dropped, so about 105 days (weekly) or 240 days (monthly) of data. Days and periods without rows count as zero. A constant history (for example all zero) gets a flat forecast with forecastNote. Reads the ClickHouse warehouse when available, else the live Search Console API.

generate_seo_report

ChatGPT
Runs the full analysis suite for one property in a single call and returns a complete, self-contained HTML report styled like the GSC Wizard app (overview, top queries/pages, countries & devices, CTR curve vs benchmark, opportunities, ranking changes, decaying content, query decay matrix, cannibalization, section breakdown, data coverage, sitemaps). This is far faster than calling each analysis tool separately (one round trip, shared auth + property resolution, server-side parallel reads) and is served from the ClickHouse warehouse when available. Use format="html" (default) for a ready-to-open report, or format="json" for the underlying data bundle.

get_account_info

ChatGPT
Returns the authenticated user, the connected Google accounts (email + scopes), and the subscription status. Useful as a first call to confirm the MCP server is wired up correctly and the user has the data sources you expect.

get_bing_crawl_issues

ChatGPT
URLs where Bing found crawl issues for a property: HTTP 4xx/5xx, 301/302 redirects, robots.txt blocks, DNS/timeout errors and malware, each with the HTTP code, inbound-link count, and decoded human-readable issue labels. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_crawl_stats

ChatGPT
Bing's daily crawl statistics for a property (roughly the last 6 months): pages crawled, pages in the index, inbound links, and a breakdown of response codes (2xx, 301, 302, 4xx, 5xx), robots.txt blocks, crawl errors and malware flags. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_feeds

ChatGPT
Sitemaps and feeds submitted to Bing Webmaster Tools for a property, with each feed's decoded status (Success / Pending / Warning / Error), type (Sitemap / RSS / Atom / ...), submitted and last-crawled dates, URL count and file size. The Bing counterpart to list_sitemaps. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_keyword_stats

ChatGPT
Bing Webmaster Tools' historical impression volume for a single keyword (weekly buckets), plus its broad-match impressions. This is Bing marketplace demand data, not tied to any of your properties, so it needs no siteUrl. Useful for gauging Bing search demand and seasonality for a term. Returns notConfigured: true when no Bing Webmaster API key is set up in the GSC Wizard app.

get_bing_page_queries

ChatGPT
The Bing search queries that led to ONE landing page (clicks, impressions, CTR as a 0-100 percentage, and impression-weighted average position per query). The per-page keyword view Bing Webmaster Tools shows when you drill into a URL, and the natural drill-down after get_bing_page_stats. Pass the page URL exactly as get_bing_page_stats returns it. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_page_stats

ChatGPT
Top landing pages on Bing Webmaster Tools for a property, aggregated across the window (clicks, impressions, CTR as a 0-100 percentage, and impression-weighted average position). The Bing counterpart to query_top_pages. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_query_page_stats

ChatGPT
Bing Webmaster Tools query+landing-page pairs for a property, aggregated across the window (clicks, impressions, CTR as a 0-100 percentage, and impression-weighted average position per pair). Shows which query drives each page on Bing, the basis for per-page keyword analysis and cannibalisation checks. Bing has no endpoint that returns these combinations, so they are assembled with one request per top page; pass query to pair from a single query instead, or use get_bing_page_queries for one page's queries. Coverage is bounded by seedLimit and by Bing's own top-value sampling, so totals are a lower bound (truncated says when). Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_query_page_trend

ChatGPT
Daily clicks, impressions, CTR (0-100 percentage) and average position for ONE exact query+landing-page combination on Bing. The only Bing endpoint that carries a true pair-level position, so this is what a "did this page slip for this term?" check needs. Take the query and page verbatim from get_bing_query_page_stats or get_bing_page_queries. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_query_stats

ChatGPT
Top search queries on Bing Webmaster Tools for a property, aggregated across the window (clicks, impressions, CTR as a 0-100 percentage, and impression-weighted average position). The Bing counterpart to query_top_queries. rowCount is how many rows this response holds (at most limit); totalRows is how many distinct queries Bing reported for the window before that cut. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_traffic_stats

ChatGPT
Daily clicks and impressions from Bing Webmaster Tools (Bing/Yahoo/DuckDuckGo organic) for a property, roughly the last 6 months. Complements Google Search Console data with the Bing side of organic search. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_bing_url_submission_quota

ChatGPT
Remaining Bing Webmaster Tools URL-submission quota for a property: the daily and monthly allowances left for submitting URLs to Bing's index. Returns notConfigured: true when no Bing Webmaster API key is set up for the property.

get_blended_landing_pages

ChatGPT
Joins Search Console (clicks, impressions, CTR, position) with GA4 (sessions, bounce rate, key events, revenue) per landing page, on the canonical path (no query/hash, no trailing slash). Flags GSC-only and GA4-only pages so neither side is silently dropped. By default GA4 metrics are limited to google / organic sessions so both sides describe the same traffic (set organicOnly to false for all-traffic GA4 metrics). Units differ by source: ctr is a percentage 0-100 (like every GSC CTR here) while bounceRate is a GA4 fraction 0-1. For a URL-prefix property with a path (e.g. https://example.com/blog/) only GA4 landing pages under that path are joined. Requires a GA4 property linked to the site in GSC Wizard; returns a notConfigured explanation otherwise. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_branded_performance

ChatGPT
Splits a property's search performance into BRANDED and NON-BRANDED using the branded keywords saved on the property (set them with update_site; a keyword wrapped in slashes like /acme ?corp/ is treated as a regex, otherwise it is a case-insensitive substring). Returns totals, the branded share of clicks, a daily clicks trend for both sides, and the top queries on each side, with optional comparison-period totals. nonBranded is the property total minus branded, so the two sides add up to the property total (total) and brandedClickShare is branded clicks over that total. Search Console leaves anonymised queries out of any query-filtered read, so they cannot be matched against the keywords; they are rare, long-tail searches, counted in nonBranded and also reported on their own as anonymized. topNonBrandedQueries lists named queries only. Returns notConfigured (not an error) when the property has no branded keywords yet. Served from the GSC Wizard ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_content_group_performance

ChatGPT
Measures a property's content groups: clicks, impressions, CTR, impression-weighted average position, distinct page count and share of clicks per group, plus an "uncategorized" bucket for pages no group claims. Pass groupId to drill into one group's top pages instead. Matching is first-match-wins in the groups' saved order, the same as the web app. Served from the GSC Wizard ClickHouse warehouse when available (where group totals are EXACT over every page of the property), otherwise from the live Search Console API over the top 25,000 pages by clicks (see dataSource and truncated). Use list_content_groups to see or create_content_group to add the definitions this reports on. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_core_web_vitals

ChatGPT
Chrome UX Report field data for a property (or a single page): the weekly history of Core Web Vitals (LCP, INP, CLS) plus FCP and TTFB, each with its p75 value, good/needs-improvement/poor rating, and the good-bucket density trend. Also reports any week-over-week rating regressions. Where Chrome detected ads, adMetrics adds its four experimental ad metrics (ad count, ad density, ad CPU, ad network weight) as a p75 trend each. These have no thresholds and no rating, and are absent for sites with no ads. Needs a Chrome UX Report API key configured in the app; returns notConfigured otherwise, or noData when CrUX has too little real-world traffic for the target.

get_cross_site_summary

ChatGPT
Aggregates a last-N-days clicks/impressions summary across ALL of the authenticated account's registered Search Console properties (optionally filtered to those carrying a given tag), with a same-length prior period for comparison and per-site totals. Useful for a portfolio-level health check. Each site routes independently to the ClickHouse warehouse or the live Search Console API, so dataSource is reported per site. A site whose read fails is reported in errors rather than failing the whole call.

get_decay_overview

ChatGPT
Per-query or per-page performance broken down by month or week — the same matrix the app's Query Decay and Content Decay pages render (a row per query/page, one column per period). Use this to SEE how traffic trended period by period; use find_decaying_content instead when you only need decliners between two fixed ranges. Returns the top limit rows by total clicks, each with a values array aligned to periods for the chosen metric, plus a TOTALS-style per-period aggregate across all matched rows. Defaults to the last months complete months (through the end of last month). Served from the GSC Wizard ClickHouse warehouse when available (longer history, no GSC sampling), otherwise the live Search Console API (see dataSource).

get_experiment_results

ChatGPT
Scores one SEO experiment: assigns the property's landing pages to the experiment's control and variant URL groups, then compares each variant against the control (group 0) on click growth period-over-period. Returns per-group clicks/impressions/CTR (with a confidence interval) and an impression-weighted average position, plus for each variant the uplift in growth (percentage points) with its CI, a significance test of that growth difference (significant exactly when the CI excludes 0), the winner, and a low-power warning. ctrPValue is a separate test of the CTR difference, for reference only. The comparison window is the prior same-length period. Reads the ClickHouse warehouse when available, else the live Search Console API.

get_feed_audit_results

ChatGPT
Results of the Merchant Center feed audit for a GSC Wizard site: the latest run (or the run of a given runDate) with its status, Feed Score (0-100, split into scoreFeed and scorePage), failure counts by severity, per-check applicable / failed / passed counts with pass rates, offers audited, pages fetched and crawl coverage, plus the score history of earlier runs for the trend. coverage and the rates are 0-1 fractions (0.12 = 12%), not the 0-100 percentage ctr uses elsewhere. checkKey narrows the checks list to one check; severity is accepted for parity with the app report, but the per-offer issue rows behind either filter live in the ClickHouse warehouse this server cannot read, so such a call answers issuesAvailable: false with a pointer at the Feed Audit report in the GSC Wizard app. run.crawlBlocked: true means the page crawl stopped early because the site refused GSCWizard-Bot (401/403 or robots.txt), so the page-plane checks and scorePage cover few or no pages; allow the crawler and queue a new run. run: null means no audit has run yet (queue one with run_feed_audit). syncPaused (with a one-line staleNote) means the Merchant Center sync is paused because Merchant Center no longer lets the connected Google account read the merchant: the stored results are still returned but may be stale, and syncPaused.message says how to fix it. syncNotice (reason "gmc_on_other_account") means Merchant Center is connected on another Google login than the property's Search Console one, so no new audit can run; stored results are still returned. Returns a notConfigured result (not an error) when Merchant Center is not connected, its credentials were revoked, no Merchant Center account is linked to the site, or (reason "gmc_on_other_account") no audit was ever stored because Merchant Center sits on another Google login.

get_filter_options

ChatGPT
Lists the scope filters available on a property for get_site_summary, query_top_queries, query_top_pages, query_countries and query_devices: whether branded keywords are set (for brand: 'branded' | 'non_branded'), and every content group (contentGroupId) and topic cluster (topicClusterId) with filterable and, when false, the reason. Works on properties shared with you as well as your own. Reads configuration only; no Search Console data is fetched.

get_ga4_ecommerce

ChatGPT
GA4 ecommerce performance for the GA4 property linked to a GSC Wizard site: a revenue / transactions / purchasers summary plus channel, source-medium, page, landing-page, and product (itemName) breakdowns. Revenue is in the property currency (currencyCode). hasEcommerce is false when the property shows no ecommerce activity in the period. When active filters are incompatible with the item-scoped Products report, itemsFilterSkipped is true and items is unfiltered while every other table reflects the filters. totalRows gives the full row count of every table before limit. Returns a notConfigured result (not an error) when Google Analytics is not connected or no GA4 property is linked to the site in the GSC Wizard app. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_ga4_error_pages

ChatGPT
Reports GA4 error pages for the property linked to a site: sessions, page views, active users and bounce rate per error page, broken down by page title AND URL. GA4 has no native 404 signal, so error pages are identified by matching the pageTitle dimension against saved patterns (operators contains / equals / starts_with / ends_with / regex, case-insensitive, OR-ed together). By default it uses the patterns saved for the site in GSC Wizard; pass titleFilters to override them for one call without saving anything. Returns notConfigured when Google Analytics is not connected or no GA4 property is linked, and noPatterns when the site has no saved patterns and none were passed. totals counts each session and user once across all matching pages (not the sum of the rows), and bounceRate is a fraction 0-1, not a percentage. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_ga4_key_events

ChatGPT
Segments the GA4 property linked to the site on ONE key event (conversion, e.g. form_submit): totals, session/user conversion rates, and per channel, source, landing page, page, country and device breakdowns. Also lists the available key events on the property. When keyEvent is omitted, the most active key event in the period is picked automatically. A keyEvent that is not marked as a key event in GA4 returns plain event counts instead (isKeyEvent: false, with a note). A key event whose name has characters other than letters, digits and _ (e.g. "Sign Up") is reported through an event filter instead, with metricMode "event_filter" and a note on what the numbers mean. rawEventCount is the plain count of the event; when GA4 counted fewer key events than that (marked as a key event after it fired, or counted once per session), a note explains the gap. Rates (sessionKeyEventRate, userKeyEventRate) are fractions 0-1, not percentages. Returns a notConfigured result when Google Analytics is not connected or no GA4 property is linked. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_ga4_llm_traffic

ChatGPT
Sessions, engagement, conversions (key events) and revenue referred to the site by ChatGPT, Perplexity, Microsoft Copilot, Google Gemini, Claude and 13 other AI assistants (identified by referrer domain and combined with GA4’s own "AI Assistant" channel), from the GA4 property linked to the site, with the share of total traffic they represent and per-assistant and per-landing-page breakdowns. Note: Google AI Overviews / AI Mode traffic carries no distinct referrer, is indistinguishable from google/organic, and is NOT included. llmShareOfSessions, engagementRate and bounceRate are fractions 0-1, not percentages. An assistant's activeUsers adds up its referrer domains (e.g. chatgpt.com + chat.openai.com), so a user who came through two of them counts twice; summary.activeUsers is exact. Returns a notConfigured result when Google Analytics is not connected or no GA4 property is linked. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_ga4_overview

ChatGPT
Google Analytics 4 summary for the GA4 property linked to a GSC Wizard site: sessions, active/total/new users, page views, engagement rate, session duration, bounce rate, event count, and key events, with an automatic previous-period comparison (prevSummary). When the comparison period has no GA4 data at all (e.g. before the data stream existed), comparisonHasData is false and prevSummary is null instead of all zeros. Set includeTimeseries for daily points. engagementRate and bounceRate are fractions 0-1, not percentages; averageSessionDuration is in seconds. Returns notConfigured (with a reason and hint) instead of data when Google Analytics is not connected or no GA4 property is linked to the site in the GSC Wizard app. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_gmc_account_health

ChatGPT
Use this when the user asks why their products are missing from Google Shopping everywhere at once, why a whole Merchant Center account stopped serving, or whether the account is in good standing. Account-level health of the Google Merchant Center account linked to a GSC Wizard site: the account issues Merchant Center raises (suspensions, misrepresentation and other policy warnings, missing settings), each with severity CRITICAL / ERROR / SUGGESTION, the affected destinations (FREE_LISTINGS, SHOPPING_ADS, ...) and regions, plus eligibility checks on the settings Google reads: the Merchant Center terms of service, the free-listings program state (with any unmet requirements), whether the website is claimed, account shipping services, return policies and business info. Issues come most severe first, then by title; checks keep that fixed order. Every check has a status (ok / suggestion / warning / critical / unknown) and a plain-language message, and overallStatus is the worst of them and of the issues. Not for per-product problems: use get_product_listing_status or get_feed_audit_results. Business contact details are reported as present or missing only, never their values. A check whose setting this Google login may not read answers status "unknown" (see sections) instead of failing the call. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app.

get_gmc_best_sellers

ChatGPT
Google's best sellers ranking for one country from the Google Merchant Center account linked to a GSC Wizard site: the most popular product clusters ("product_cluster", the default) or brands ("brand") per Google product category, with rank, previous rank, relative demand (VERY_LOW..VERY_HIGH), its direction (SINKER / FLAT / RISER) and, for product clusters, whether any of your offers matches (inventoryStatus). Each product-cluster row carries demandGap: true when Google ranks the cluster but you do not stock it, the classic assortment-gap signal; note that inventory status ignores the report country. Pick WEEKLY (Monday-dated) or MONTHLY (1st-dated) reports; omit reportDate for the newest report Google has published (reports lag up to two weeks). countryCode is required because the Merchant API answers one country per request; categoryId (Google product taxonomy id) narrows to one category, otherwise every top-level category is returned. reportUnavailable (with no rows) means Google refuses this report for the Merchant Center account (eligibility); the other reports are unaffected. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app.

get_gmc_competitors

ChatGPT
Competitive visibility from the Google Merchant Center account linked to a GSC Wizard site, for one (country, Google product category, traffic source) cell. "competitor" (default) returns one row per day per competing domain (rank, relativeVisibility, adsOrganicRatio, pageOverlapRate, higherPositionRate) plus a per-domain roll-up over the window; "top_merchant" returns one aggregate row per domain for the window (Google does not expose a date on that view); "benchmark" returns one row per day with yourDomainVisibilityTrend and categoryBenchmarkVisibilityTrend, both relative to the start of the window. relativeVisibility and adsOrganicRatio are RATIOS (200 = two hundred times as often as you); pageOverlapRate, higherPositionRate and the trends are 0-1 FRACTIONS as Google reports them (0.12 = 12%), not the 0-100 percentage ctr uses elsewhere in this server. countryCode (ISO 3166-1 alpha-2) and categoryId (Google product taxonomy id, digits) are both required because the Merchant API answers one cell per request. reportUnavailable (with no rows) means Google refuses this report for the Merchant Center account (eligibility); the other reports are unaffected. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_gmc_data_sources

ChatGPT
Use this when the user asks whether their Merchant Center feeds are working, or why Shopping clicks or the product count dropped suddenly (a broken feed looks like a ranking loss in the performance reports). The data sources (feeds) of the Google Merchant Center account linked to a GSC Wizard site, with the latest processed upload or scheduled fetch of every file source: its processing state (SUCCEEDED / FAILED / IN_PROGRESS), when it ran, items total / created / updated, and the processing issues Google reported (title, code, item count, WARNING / ERROR). Each source carries its type (primary or supplemental product, local or regional inventory, promotion, reviews), input (API / FILE / UI / AUTOFEED), feed label, content language, target countries, per-destination state and fetch schedule. Rows list primary sources first, then supplemental, then the rest, each by displayName. findings lists what needs attention, most severe first: failed uploads, files processed with errors, scheduled fetches that stopped running, and primary sources with FREE_LISTINGS switched off. Not for per-product item issues: use get_product_listing_status. Fetch URLs are reduced to their scheme and host because feed URLs often embed credentials. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app.

get_gmc_pricing_insights

ChatGPT
Price competitiveness and sale-price suggestions from the Google Merchant Center account linked to a GSC Wizard site, joined per product: your price against the market benchmark for the same product (priceGapFraction, positive = you are more expensive), and Google's suggested sale price with the predicted change in impressions, clicks and conversions if you adopt it. Sort by "opportunity" (largest predicted clicks gain first, the default) or "gap" (largest absolute price gap first). Both views are dateless snapshots of the current catalog. All predictedChangeFraction and Fraction fields are 0-1 FRACTIONS as Google reports them (0.12 = +12%), not the 0-100 percentage ctr uses elsewhere in this server. Benchmarks need valid GTINs and suggestions need conversion reporting, so an empty result usually means "not eligible", not "no data"; reportUnavailable (with no rows) means Google refuses the pricing report for the Merchant Center account outright, and the other reports are unaffected. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app.

get_gmc_title_hygiene

ChatGPT
Title and description hygiene of the product catalog in the Google Merchant Center account linked to a GSC Wizard site: title length distribution (0-29 / 30-69 / 70-150 / 151+ characters), description length distribution (0-49 / 50-499 / 500-5000 / 5001+) and how many offers have no description, mean and median title length, duplicate titles (offers sharing the same normalised title, largest groups first), offers whose title repeats a word, and the most frequent title words with brand tokens flagged. Computed over a sample of the live catalog: the first limit products in feed order (default 2000, max 5000); truncated: true means the catalog had more. topWords[].share is a 0-1 FRACTION of the sampled offers, not the 0-100 ctr percentage; lengths are in characters, CJK titles included. A catalog snapshot, so it takes no date range. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app.

get_indexing_tracker

ChatGPT
Returns the GSC Wizard Indexing Tracker configuration for a property plus summary stats (total tracked URLs, indexed / not-indexed / pending / error counts, active warnings, and the most recent check time). Returns tracker: null if no tracker is configured for the property.

get_indexing_tracker_report

ChatGPT
Aggregate indexing-health report for a property over the last N days (default 30, max 90). Computes a 0-100 health score from indexed %, crawl freshness, and warning-free %, plus a coverage-state breakdown, crawl-freshness buckets, recently lost pages, and newly indexed pages.

get_indexnow_settings

ChatGPT
Reports whether IndexNow is set up for a property: whether an API key is configured (masked to its last four characters, the full key is never returned) AND whether the key file is actually reachable on the site. Both are required before search engines accept submissions. When keyFileVerified is false, keyFileUrl is the exact file the site owner must publish, containing the key and nothing else. keyFileVerified is null when the check was inconclusive (timeout or a bot rule), which is not a failure. Check here before submit_indexnow_urls and whenever a submission fails. When no key is set, call update_indexnow_settings with generateKey: true and publish the key file it returns.

get_inspection_quota

ChatGPT
Returns the remaining URL inspection quota for a property today. GSC enforces a 2,000 inspection/day/property cap; GSC Wizard tracks usage across both UI and MCP calls. Call this before bulk inspections to avoid surprises.

get_longtail_clusters

ChatGPT
Segments a property's pages into Head / Chunky Middle / Long Tail tiers by elbow detection on the cumulative-clicks curve (the app's Long-tail Clustering report). Returns each tier's page count, click/impression share, average CTR/position/query-diversity, the knee points, and the top pages per tier. Useful for spotting over-reliance on a few pages or a bloated long tail to prune. Page clicks/impressions/position (and the totals) are the page figures Search Console's page filter shows, including anonymized-query traffic; query diversity counts the page's query x page rows. Reads the ClickHouse warehouse when available, else the live Search Console API. truncated: true (with truncationNote) means a cap was hit: the warehouse clusters at most the 100,000 pages with the most clicks, the live API reads at most 100,000 pages and 100,000 query x page rows. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_merchant_listings_performance

ChatGPT
Search Console performance for one search appearance, defaulting to MERCHANT_LISTINGS: the appearance inventory of the property, a daily clicks / impressions / CTR / position timeline, and the top pages (product URLs) behind it. Answers "how visible are my product results in Search, and which products carry it". Search Console merchant listings counts enriched product results in web Search only, while Google Merchant Center free-listing numbers (get_organic_shopping_performance) cover the Shopping tab, Images, Lens, YouTube and Maps too, so the two do not reconcile to one figure. Always served from the live Search Console API: search appearance is never stored in the GSC Wizard warehouse, and it can be filtered on but never grouped with another dimension. hasAppearance is false when the property has no rows for the requested appearance, which is normal for non-ecommerce sites. The window may span at most 16 months (Search Console retention); a longer one is rejected with bad_request. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_migration_health

ChatGPT
Health check of a site migration around its go-live date: the Migration Compare analysis of the GSC Wizard app (without brand terms, the search-type split or the country / device filters of a saved migration; notes says what differs). Returns recovery (side B clicks per day as a % of side A clicks per day before go-live), pace against the recovery a migration on track reaches by now, momentum, a projected recovery with milestone dates, URL success per migration unit, a 0-100 risk score with its factors, prioritised recommendations, redirect status counts from the stored redirect checks, the top lost pages, redirect problems, lost queries and losing sections, the old-to-new impression handover, the click change split into demand / position / CTR effects, the country and device splits (segments) with their recommendations, and a launch checklist. siteUrl is the OLD property (side A); pass siteUrlB (the new property) for a domain move and omit it when the migration happened inside one property. Pass goLiveDate, or a migrationId from list_migrations to reuse a migration saved in the app (its properties, URL prefixes or regexes, go-live date, windows, mapping label and Only mapped URLs setting; explicit arguments override it). Redirect mappings are the ones saved for the property pair (add_migration_redirects or the app); without any, pages are joined by path. onlyMapped is the app's "Only mapped URLs": with saved mappings, the totals, recovery and health count only the pages the mappings claim, and so do the country and device splits of a side read from the warehouse (segments.scope says which; each 10 warehouse queries of those splits cost one more rate-limit unit). Windows as in compare_migration: windowStrategy "recent" (default), "from-go-live" or "full", windowDays (default 28), yoyBaseline. Page and query reads cover at most the top 25,000 rows by clicks per side and window, and at most 10,000 redirect mappings are analysed (each 2,000 costs one more rate-limit unit); truncated says when a cap was reached. health is null until a post-launch day has final data.

get_organic_shopping_performance

ChatGPT
Organic (free listing) product performance from the Google Merchant Center account linked to a GSC Wizard site: a daily clicks / impressions / conversions timeline plus the top offers, groupable by brand, Google category or merchant product type. Optionally includes the non-product timeline (category and home pages reached from Merchant Center surfaces). Merchant Center free-listing numbers cover the Shopping tab, Search, Images, Lens, YouTube and Maps, while Search Console merchant listings (get_merchant_listings_performance) counts enriched product results in web Search only, so the two do not reconcile to one figure. Conversions exist only where the merchant configured a Merchant Center conversion source. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_page_performance

ChatGPT
Daily performance for a single page (clicks, impressions, CTR, position). Useful for diagnosing post-deploy regressions on a specific URL. Served from the ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_position_distribution

ChatGPT
Slices a property by where it ranks, using the same 1-3 / 4-10 / 11-20 / 21+ bands as the GSC Wizard dashboard. granularity "period" (default) returns impressions, clicks and the number of queries (or pages) in each band over the whole range, showing how top-heavy the property's visibility is. granularity "daily" returns one row per day with the count of DISTINCT queries ranking in each band, which is how you see a ranking shift build up or a drop land on a specific date. Positions are impression-weighted averages, so a row sits in one band only. Served from the GSC Wizard ClickHouse warehouse when available (both views are computed in the warehouse over every query or page, never truncated; scanLimit is null there), otherwise from the live Search Console API over the top scanLimit rows by clicks, which drops zero-click rows first and so understates the deep bands when truncated is true (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_product_listing_status

ChatGPT
Free-listing eligibility and item issues per product, from the Google Merchant Center account linked to a GSC Wizard site, sorted by clickPotentialRank (1 = the product Google expects the most clicks from). Answers "which products are invisible in free listings, and why": each row carries the aggregated status (ELIGIBLE / ELIGIBLE_LIMITED / PENDING / NOT_ELIGIBLE_OR_DISAPPROVED), the free-listings status when the synced catalog has it, the top issue code and whether fixing it needs a merchant action or is just pending Google processing. statusCounts, issueCounts, problemCount and merchantActionCount (problems that need a feed or site fix) summarise the whole scan, not just the returned page; page through every row with offset, passing back nextOffset until it is null. Answered from the catalog snapshot GSC Wizard syncs daily into its warehouse when the site has one (dataSource: "clickhouse", syncedAt says when, stale: true when it is more than two days old; every offer is counted), with a live Merchant API scan of up to 5,000 products as the fallback (dataSource: "merchant-api", truncated when the catalog had more or Merchant Center was too slow to read it all within about 40 seconds; truncationReason says which). itemIssuesUnavailable: true means Google refused the issue data, so a missing issue code is unknown rather than clean. syncPaused (with a one-line staleNote) means the daily sync is paused because Merchant Center no longer lets the connected Google account read the merchant: the data is still returned but may be stale, and syncPaused.message says how to fix it. syncNotice (reason "gmc_on_other_account") means Merchant Center is connected on another Google login than the property's Search Console one, so the snapshot cannot refresh; the data is still returned. This is catalog state, not traffic: pair it with get_organic_shopping_performance for the clicks a product actually got. Returns a notConfigured result (not an error) when Merchant Center is not connected, its credentials were revoked, no Merchant Center account is linked to the site in the GSC Wizard app, or (reason "gmc_on_other_account") nothing was ever synced because Merchant Center sits on another Google login and no live read is possible.

get_query_performance

ChatGPT
Daily performance for a single search query, optionally restricted to one landing page. Useful for tracking position changes after on-page edits. Served from the ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_query_shape_trend

ChatGPT
Tracks how much of a property's search traffic comes from AI-shaped queries over time: the trend chart on the app's Query Analysis report. Returns one row per month (or week) with clicks and impressions split into AI-shaped (reply artefacts, pivot follow-ups, conversational questions) versus conventional keywords, plus the AI-shaped share of each metric. Use this to answer "are AI Overviews / AI Mode queries growing on this site?", which no single-period report can show. Defaults to the last 12 complete months. Served from the GSC Wizard ClickHouse warehouse when available (longer history, no sampling), otherwise the live Search Console API.

get_query_value_attribution

ChatGPT
Estimates GA4 sessions, key events, and revenue per Search Console query via proportional click share: a query with 80% of a page's GSC clicks is credited 80% of that page's GA4 outcomes. Page-level estimates with known blind spots (device/country/date mismatches are invisible; every click is treated as equally likely to convert). matchedClickShare reports how much of the click volume the estimates cover; estRevenue appears only when the GA4 property records revenue. Requires a GA4 property linked to the site in GSC Wizard; returns a notConfigured explanation otherwise. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_ranking_changes

ChatGPT
Compares a current period against a comparison period and classifies movers by query or page into new, lost, improved, and declined buckets (improvement = better/lower average position). Useful for spotting what gained or lost visibility between two date ranges. On the warehouse path each period reads the top movers by clicks (capped at max(limit*10, 1000)); served from the GSC Wizard ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_site_summary

ChatGPT
Returns clicks, impressions, CTR, and average position for a property over the last N days (default 28), with a same-length prior period for comparison. Use this for quick health checks before drilling into details. Served from the ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource).

get_sitemap_performance

ChatGPT
Fetches a sitemap belonging to the property, extracts its URLs, and joins them with Search Console page performance over a date range. Each URL gets its clicks, impressions, CTR, and average position (zeros if the page has no GSC data). Reports how many sitemap URLs actually received impressions (indexedInGscCount). Expands one level of a sitemap index (up to 5 child sitemaps), caps extracted URLs at maxUrls (default 500, max 2000), and only fetches http(s) URLs on the property host or a subdomain of it. Served from the ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_tag_group_view

ChatGPT
Aggregated cross-site report for every property carrying a given tag (the data behind the app's /group/tag/<tag> dashboard). Returns last-N-days totals with a same-length prior-period comparison, a merged daily clicks/impressions trend, per-site totals, and merged top-N breakdowns by query, page, country, and device. Each site routes independently to the ClickHouse warehouse (longer history, no sampling) or the live Search Console API; dataSource is reported per site and a site whose read fails is reported in errors rather than failing the whole call. Use list_tags first to discover tag names; use get_cross_site_summary for a lighter totals-only view across all properties.

get_topic_cluster_performance

ChatGPT
Measures a property's topic clusters: clicks, impressions, CTR, impression-weighted average position, matched query count and share of clicks per cluster, plus an "unclustered" bucket for queries no cluster claims. Pass clusterId to drill into one cluster's top queries (each row lists which of the cluster's keywords matched). A cluster keyword is a case-insensitive substring unless wrapped in slashes (/seo ?tools/), which makes it a regex. IMPORTANT: clusters may OVERLAP (a query matching two clusters counts fully in both), so cluster totals do not sum to the property total; overlappingQueries reports how many queries are double-counted. Matching runs over the top scanLimit queries by clicks (default 50,000), read from the GSC Wizard ClickHouse warehouse when available (which scans at most 50,000 queries; scanLimit in the response is the limit actually applied), otherwise the live Search Console API (see dataSource). Use list_topic_clusters / create_topic_cluster to see or add the definitions this reports on. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

get_yandex_indexing_history

ChatGPT
How Yandex crawls and indexes a property over time: the HTTP status codes Yandex's crawler received by day, how many pages are in Yandex search, and the count of pages that appeared in or were removed from Yandex results each day. Use the appeared/removed series to spot day-to-day indexing swings in Yandex. Returns notConfigured: true when no Yandex account is connected or the property is not in it.

get_yandex_query_stats

ChatGPT
Search queries from Yandex Webmaster for a property, with impressions, clicks, average impression position and average clicked position. IMPORTANT COVERAGE LIMIT: Yandex exposes its top queries for the period, at most 3,000 of them, so totals derived from these rows are a floor, not a complete figure; say so when reporting them. Yandex serves 500 rows per request and this tool pages through as many as limit allows, defaulting to the first 500 by orderBy; totalAvailable and truncated say how much of the pool was left. CTR is a percentage (0-100, like every other CTR this server returns), calculated from impressions and clicks because Yandex publishes no CTR metric; null when there were no impressions. Yandex has no query-by-page report, so these queries cannot be attributed to URLs. The dates select a real window, so a longer range returns more queries and larger totals; omitting them gives the last week only. Yandex finishes a day about four days late, so range echoes the window it actually served. The full set of caveats is in limitations on every response. Returns notConfigured: true (with a reason) when no Yandex account is connected, the connection has to be granted again, the property is not in it, or the caller holds a share of the property rather than owning it: Yandex data is owner-only.

get_yandex_site_summary

ChatGPT
Yandex Webmaster's summary for a property: site quality index (SQI), pages in search, excluded pages, and the problems Yandex is currently reporting, by severity. Complements Google Search Console with the Yandex side of organic search, which matters for Russian, Turkish, Kazakh, Belarusian and Uzbek traffic. SQI and the problem severities are Yandex's own taxonomy with no Google equivalent, and Yandex serves no previous-period series, so there is nothing to compare against: the response carries these caveats in limitations, which should be passed on when reporting the numbers. When the problem list could not be read (a Yandex rate limit or timeout), problems is empty and warnings says so. Returns notConfigured: true (with a reason) when no Yandex account is connected, the connection has to be granted again, the property is not in it, or the caller holds a share of the property rather than owning it: Yandex data is owner-only.

inspect_url

ChatGPT
Runs the Google URL Inspection API for one URL and stores the result in the GSC Wizard inspection history. Returns the verdict, coverage state, robots.txt state, last crawl time, and the fetched/crawled-as info. GSC enforces a daily per-property quota — call get_inspection_quota first if you plan to inspect many URLs.

list_algo_updates

ChatGPT
Fetches confirmed Google ranking/algorithm updates from the official Search Status Dashboard. Filters to service_name="Ranking" so indexing/crawling incidents are excluded. Optionally clip to a date range.

list_annotations

ChatGPT
Lists chart annotations visible to the user across scopes — platform-wide (Google ranking updates synced from the Search Status dashboard), account-wide (user notes), and property-scoped. Optionally restrict to one property.

list_bing_sites

ChatGPT
Lists the sites verified in the Bing Webmaster Tools account linked to GSC Wizard (via the stored Bing Webmaster API key). Use this to discover the exact site URLs Bing recognises before calling the other get_bing_* tools. Returns notConfigured: true when no Bing Webmaster API key is set up in the GSC Wizard app.

list_content_groups

ChatGPT
Lists content groups for a property. Content groups partition the URL space using JSON rules (e.g. prefix matches, regex). Used in the dashboard for page-level aggregations.

list_experiments

ChatGPT
Lists the SEO experiments (split tests) defined for a property in GSC Wizard, each with its control/variant URL groups, source, status, and start date. Use get_experiment_results to score one. By default only active experiments are returned.

list_ga4_custom_dimensions

ChatGPT
Lists the custom dimensions and custom metrics REGISTERED on the GA4 property linked to a site (GA4 Admin > Custom definitions) - the event parameters and user properties that property collects on top of the standard GA4 fields, such as a source_format or target_path sent with an internal_link_click event. Each entry carries the exact apiName (e.g. customEvent:source_format) that query_ga4_custom_dimensions takes. Call this FIRST: an event parameter that is not registered cannot be reported on at all, and GA4 answers an unregistered name with an empty report rather than an error, so a name must never be guessed. Returns a notConfigured result (not an error) when Google Analytics is not connected or no GA4 property is linked to the site in the GSC Wizard app.

list_ga4_properties

ChatGPT
Lists every Google Analytics 4 property readable by the connected Google accounts of the authenticated user, and which GSC Wizard sites each property is linked to (via linkedSiteUrls). Use it to discover GA4 property IDs or to verify the Analytics setup of a site. linkedSiteUrls covers only the sites of the GSC Wizard account this connection is authenticated as (returned as account): links made from a different GSC Wizard account come back empty here even though the app shows them. An empty result with connected: false means the Google Analytics consent has not been granted in the GSC Wizard app yet (connect Google Analytics at tool.gscwizard.com first), or, with reauthRequired: true, that it was granted but Google now rejects every such account, so it has to be reconnected. errors lists every Google account whose properties could not be read (its properties are missing from the list), with the reason.

list_gmc_accounts

ChatGPT
Lists every Google Merchant Center account readable by the connected Google accounts of the authenticated user, and which GSC Wizard sites each account is linked to (via linkedSiteUrls). Use it to discover the Merchant Center account id to link to a property, or to verify the Shopping setup of a site. isAdvanced: true marks a multi-client parent account: reporting runs against a standalone account or one of its sub-accounts, never the parent itself. linkedSiteUrls covers only the sites of the GSC Wizard account this connection is authenticated as (returned as account). incomplete: true means the list is a floor, not the whole set: gaps and unprobedAccountIds say what could not be read or checked for sub-accounts, and errors names each connected Google account whose listing failed; retry for a complete list. An empty result with connected: false carries a reason: "no_scope" means the Merchant Center consent has not been granted in the GSC Wizard app yet (connect Merchant Center at tool.gscwizard.com first); "credentials_revoked" means it was granted but Google now rejects the stored credentials, so the Google account has to be reconnected on the Account page. On a shared property, linkedAccountId is withheld (null, with a note) until the owner enables the Merchant Center opt-in on your invite.

list_indexnow_submissions

ChatGPT
Returns the IndexNow submission history for a property — URL, response code, submission source (manual / cron / mcp), and timestamp. Most recent first.

list_migration_redirects

ChatGPT
Lists the saved redirect mappings (old URL -> new URL) used by the Migration Compare report, newest first. Mappings are grouped by the A/B property pair they belong to and optionally by a label, so one account can hold several migrations at once. Pass label or siteUrlA/siteUrlB to narrow. Use summaryOnly to get just the per-migration counts instead of the rows, which is the right call on a large mapping.

list_migrations

ChatGPT
Lists the site migrations saved on the account in the GSC Wizard app (Migration Compare), most recently updated first: id, name, mode (cross-property, two-urls or regex), the old (siteUrlA) and new (siteUrlB) property, go-live date, window settings, the redirect-mapping label, whether daily re-check alerts are on, and the last health snapshot from that re-check (status, recovery, risk score, redirect problem counts). Pass an id to get_migration_health as migrationId for the full analysis. Takes no arguments.

list_report_clients

ChatGPT
Lists the client contacts on the account: the people who can be granted access to a shareable report. A client is just an email address (plus an optional name); they sign in with it to view reports shared with them. Use this to find a clientId for manage_report_access, or create_report_client to add a new contact.

list_saved_filters

ChatGPT
Lists the saved filter presets the user has created, optionally restricted to one property. Each preset stores a JSON filter spec that mirrors the filter UI in the GSC Wizard dashboard.

list_shared_reports

ChatGPT
Lists the shareable reports saved on the account, newest first, each with its view URL and the clients currently granted access. Use it to find a reportId before calling manage_report_access or delete_shared_report, or to audit who can see which report.

list_sitemaps

ChatGPT
Lists every sitemap submitted to Google Search Console for a property, including submission timestamps, warning/error counts, and per-content-type submitted/indexed URL counts.

list_sites

ChatGPT
Lists all Google Search Console properties connected to the authenticated GSC Wizard account. Returns the site URL (which may be a domain property prefixed with sc-domain: or a URL prefix property), tags, and which data source backs the property.

list_tags

ChatGPT
Lists every tag defined on the account: account-level global tags plus any tag attached to a registered Search Console property, with the number of properties carrying each tag. Tags group properties into portfolios; feed a tag name to get_tag_group_view for an aggregated cross-site report, or to get_cross_site_summary for a totals-only view. Pass includeSites=true to also get the list of property URLs under each tag.

list_topic_clusters

ChatGPT
Lists topic clusters for a property. Each cluster groups a set of keywords under a name and is used by the dashboard to aggregate query-level metrics.

list_tracked_urls

ChatGPT
Paginated list of URLs in the GSC Wizard Indexing Tracker for a property, with optional status filter and URL substring search. Filter options: all, indexed, not_indexed, pending, errors, warnings. Returns the current verdict / coverage / indexing state and last-crawl time per URL.

list_url_inspections

ChatGPT
Returns the inspection history GSC Wizard has stored for a property — verdict, coverage, indexing state, and last-crawl time per URL. Most recent first.

list_yandex_sites

ChatGPT
Lists the sites in the connected Yandex Webmaster account, with their verification status and the canonical mirror Yandex resolved for each. Use this to find out which properties have Yandex data available. Only sites already added AND verified in Yandex Webmaster itself report data. The list is cached for ten minutes. Returns notConfigured: true when no Yandex account is connected, or when the connection has to be granted again (reason: reauth).

manage_report_access

ChatGPT
Grants or revokes client access to a saved shareable report. This is what makes a report openable at all: an ungranted report opens for nobody, including the account owner. After granting, the client opens the report URL, enters their email, and GSC Wizard emails them a login link. That self-serve sign-in only works once they hold a grant. Clients must already exist on the account: add them with create_report_client, find ids with list_report_clients. NOTE: unlike the web app's share dialog, this tool does NOT itself send a "report shared with you" notification. Either pass the recipient the report URL, or send the notification from Account > Shared Reports in GSC Wizard (https://tool.gscwizard.com/account/shared-reports), where each client has a Resend button. action "revoke" withdraws access. Granting is idempotent: a client who already had access stays granted and is reported as unchanged.

manage_tags

ChatGPT
Create, assign, unassign, rename, or delete property tags. Tags group Search Console properties into portfolios surfaced by list_tags and get_tag_group_view. Actions: "create" defines an account-level global tag (so it appears before any property uses it); "assign" adds a tag to the given properties; "unassign" removes it from the given properties; "rename" renames a tag across every property and the global list; "delete" removes a tag from every property and the global list. siteUrls is required for assign/unassign and ignored otherwise; newName is required for rename. For wholesale replacement of one property's tag set, use update_site instead.

query_countries

ChatGPT
Returns per-country performance (clicks, impressions, CTR, position) for a property over a date range. Country codes are ISO 3166-1 alpha-3. Served from the ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

query_devices

ChatGPT
Returns per-device-category performance (DESKTOP, MOBILE, TABLET) for a property over a date range. Served from the ClickHouse warehouse when available, otherwise the live Search Console API (see the response dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

query_ga4_custom_dimensions

ChatGPT
Breaks GA4 traffic down by ONE custom dimension registered on the property linked to a site (the site's own event parameters or user properties, e.g. customEvent:source_format), optionally CROSSED with a second dimension - which is how a question like "which article sent how many readers to which page" is answered: primary customEvent:source_path, secondary customEvent:target_path, filtered to the one event that carries them. Metrics per row are eventCount, sessions, activeUsers and keyEvents, plus any registered custom metrics asked for. Run list_ga4_custom_dimensions first for the exact names; an unregistered name is rejected here rather than silently returning an empty report. Returns a notConfigured result (not an error) when Google Analytics is not connected or no GA4 property is linked. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

query_ga4_report

ChatGPT
Runs ONE Google Analytics 4 dimension breakdown for the GA4 property linked to a GSC Wizard site: channel, sourceMedium, page, landingPage, country, device, event, date (daily trend) or hostName. Each dimension carries its own metric set (returned in metrics). Set secondaryDimension to "date" or "hostName" to split every row further, e.g. dimension "event" + secondaryDimension "date" shows on which days an event fired; each row then carries that field (dates as YYYY-MM-DD). Rows include prev* fields that are only meaningful when a comparison range is given (hasComparison); date breakdowns take no comparison range. Only the first limit rows are returned (truncated and note say when more exist); to follow one event, pass filters: { event: ["<eventName>"] }. When the GA4 property is shared with other sites, results are limited to this site's hostnames and siteScope says so (on a shared property a hostName filter narrows within that scope; only the owner can replace it). Rates (engagementRate, bounceRate) are fractions 0-1, not percentages. Returns a notConfigured result (not an error) when Google Analytics is not connected or no GA4 property is linked to the site in the GSC Wizard app. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

query_gmc_report

ChatGPT
Use this when the user needs a Merchant Center field, filter or ordering the fixed Merchant Center tools do not expose (a product_view gtin, offers ordered by impressions). Runs a raw Merchant Center Query Language (MCQL) query against the reports of the Google Merchant Center account linked to a GSC Wizard site. MCQL is SQL-like: SELECT offer_id, title, clicks, impressions FROM product_performance_view WHERE date BETWEEN '2026-09-01' AND '2026-09-30' AND marketing_method = 'ORGANIC' ORDER BY clicks DESC. The views are product_performance_view, non_product_performance_view, product_view, price_competitiveness_product_view, price_insights_product_view, best_sellers_product_cluster_view, best_sellers_brand_view, competitive_visibility_competitor_view, competitive_visibility_top_merchant_view, competitive_visibility_benchmark_view. The performance and competitive visibility views require a date condition in WHERE; product_view and the two price views are dateless snapshots. Read only (MCQL cannot change anything) and always against the linked account. Not for questions a fixed tool answers: use get_organic_shopping_performance, get_product_listing_status, get_gmc_pricing_insights, get_gmc_best_sellers or get_gmc_competitors, which return normalised units. Rows come back raw: int64 as strings, money as amountMicros, rates as 0-1 fractions (see unitsNote), in the order of the query's ORDER BY (declared as sortedBy / sortOrder / thenBy in camelCase when it lists plain fields), in no defined order without one. At most limit rows (default 200, max 1000); hasMore says when the query matched more. An invalid query fails with bad_request and Google's masked diagnostic. Returns a notConfigured result (not an error) when Merchant Center is not connected or no Merchant Center account is linked to the site in the GSC Wizard app.

query_search_analytics

ChatGPT
Runs a Search Console searchAnalytics.query against one of the user's properties. Supports date / query / page / country / device / searchAppearance dimensions, dimension filters, and any of the supported search types (web, image, video, news, discover, googleNews). Use this for ad-hoc questions like "top queries last 28 days" or "page-level performance for /pricing". Eligible requests are served from the GSC Wizard ClickHouse warehouse (longer history, no sampling); requests using searchAppearance, the googleNews type, 3+ distinct dimensions, or pagination (startRow > 0) fall back to the live Search Console API. The response dataSource says which path ran. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

query_top_pages

ChatGPT
Returns the top landing pages for a property over a date range, sorted by clicks. Convenience wrapper around query_search_analytics. Served from the ClickHouse warehouse when available, otherwise the live Search Console API (see the response dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

query_top_queries

ChatGPT
Returns the top search queries for a property over a date range, sorted by clicks. Convenience wrapper around query_search_analytics for the most common request. Served from the GSC Wizard ClickHouse warehouse (longer history, no sampling) when available, otherwise from the live Search Console API; the response dataSource field says which. Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

remove_tracked_urls

ChatGPT
Removes URLs from the GSC Wizard Indexing Tracker for a property. Pass the full URL strings to stop tracking. Returns the number of rows actually removed.

run_feed_audit

ChatGPT
Queues a Merchant Center feed audit for a GSC Wizard site: 21 deterministic checks over the synced product catalog (title and description length, duplicate titles / descriptions / images / URLs, GTIN, category, product type and required attributes, image size and ratio) plus a crawl of the product pages on the owner-approved host allowlist (HTTP status, JSON-LD Product schema, price and title consistency, H1 and title-element counts, page images missing from the feed), rolled up into a 0-100 Feed Score. The tool only ENQUEUES: the audit runs in the GSC Wizard app worker (the feed plane within minutes, the page crawl at a politeness-bounded pace over every distinct product URL, so a large catalog can take hours), and enqueued: false with a skipReason means a run is still in progress (run_in_progress, with the run summary in run), a run for today already exists, or one completed inside the 28-day cadence (pass force: true to override the cadence; the one-per-day rule cannot be overridden). Each user may start at most 3 runs per 24 hours (rate_limited beyond that; a call that queues nothing does not count). Poll get_feed_audit_results with the returned runDate for status and the score. Returns a notConfigured result (not an error) when Merchant Center is not connected, is connected on another Google login than the property's Search Console one (reason "gmc_on_other_account": the audit runs through the sync, which reads only through the Search Console account), its credentials were revoked, or no Merchant Center account is linked to the site in the GSC Wizard app. Requires full access on a shared property.

score_opportunities

ChatGPT
Ranks queries by an impression-weighted opportunity score that favours near-threshold positions (positions 3-30) with low current CTR, and estimates the extra clicks available if CTR improved. Sorted by score. CTR values are 0-1 ratios. Served from the GSC Wizard ClickHouse warehouse when available, otherwise the live Search Console API (see dataSource). Date range is optional: omit startDate/endDate to analyze the last 28 settled days (data lags ~2-3 days).

set_dashboard_visibility

ChatGPT
Shows or hides registered properties on the GSC Wizard dashboard, the same switch as the app's Dashboard Management page. Visibility is also what makes a property usable by the other MCP tools, so use this to bring a newly added property into scope. Showing a property consumes a dashboard slot from the plan and is refused when the plan limit is reached; ClickHouse-synced properties are always shown and consume no slot. Hiding a property only removes it from the workspace: no data is deleted, and it can be shown again at any time. The response reports slot usage before and after.

submit_indexnow_urls

ChatGPT
Pings IndexNow for the given URLs, telling participating search engines (Bing, Yandex, Seznam) that the pages have changed. The site must have an IndexNow API key configured in GSC Wizard. URLs are grouped by host before submission. Up to 100 URLs per call.

submit_sitemap

ChatGPT
Submits (or re-submits) an existing sitemap URL to Google Search Console for a property, the same action as "Add a new sitemap" in the Sitemaps report. It does not create or host a sitemap: the file must already be published and reachable at the URL you pass; this only registers it with Google or asks Google to fetch it again after new content went live. Every sitemap URL must be on the property host or a subdomain of it. Up to 20 sitemaps per call. Submitting is idempotent and queues a download; it does not index anything by itself, and Google reports parse warnings/errors only after it has fetched the file, so a freshly submitted sitemap normally comes back pending. Requires a Google account connected with full Search Console access (a read-only connection is refused before anything is sent). If a rate limit or a permission refusal stops a batch after some sitemaps were accepted, the accepted ones are still reported and the rest are listed in notAttempted, with stopReason. Use list_sitemaps to see what is already submitted.

update_annotation

ChatGPT
Edits a chart annotation the user owns: its date, label, description, category or colour. Only the fields you pass change. Scope cannot be changed (an account-wide annotation cannot be moved onto a property or vice versa); delete it and create a new one instead. Platform-scoped annotations are system events and cannot be edited via this tool.

update_content_group

ChatGPT
Edits an existing content group: its name, description, color, or matching rules. Only the fields you pass change; omit a field to leave it untouched. Passing rules REPLACES the whole rule list (rules have no stable ids across edits), so read the current rules with list_content_groups first if you mean to add one. Changing rules reassigns pages immediately in every report that uses the group; nothing is recomputed or stored, so the next get_content_group_performance call reflects the edit. A regex rule that cannot compile is rejected; one that is valid but unsupported by the warehouse or skipped as ReDoS-prone is accepted and reported in ruleWarnings. Relay those, since a skipped pattern matches no pages at all.

update_indexnow_settings

ChatGPT
Sets, rotates or clears the IndexNow API key for a property. The key is what search engines use to verify submissions from submit_indexnow_urls, and must be 8-128 characters of letters, digits and hyphens. IMPORTANT: after setting a key you must also publish it as a text file at https://<your-domain>/<key>.txt whose contents are the key itself, or every submission is rejected. Pass clear: true to remove the key, which disables IndexNow submissions for the property. Reading the key back later (get_indexnow_settings) only ever returns it masked.

update_saved_filter

ChatGPT
Renames a saved filter preset and/or replaces its filter rows. Only the fields you pass change. filters is the list of filter rows (dimension / operator / value), in the same shape list_saved_filters returns, and is REPLACED wholesale, not merged: read the current rows with list_saved_filters and pass them back with your edits applied. Passing filters without filterLogic resets the preset to AND, so pass both when the preset used OR. The property's owner or anyone with full access to it may edit any preset on it.

update_site

ChatGPT
Updates the GSC Wizard metadata for a property: tags, branded keywords and sitemap URL list. Only fields you pass are updated; omit a field to leave it unchanged.

update_topic_cluster

ChatGPT
Edits an existing topic cluster's name or keyword list. Only the fields you pass change. keywords REPLACES the whole list by default; pass mode "add" or "remove" to merge into or subtract from the current keywords instead, which is what you usually want when extending a cluster. A keyword is matched as a case-insensitive substring unless it is wrapped in slashes (/seo ?tools/), which makes it a regex. Read the current list with list_topic_clusters first when replacing.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

App Stats

131

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily