ai_overviews_impact
Discover generic Web search appearances; AI exposure remains unverified.
Parameters and source contract
ai_overviews_impact(site: str, days: int = 28, limit: int = 100) -> strRead the contract in source ↗v1.5.0 · 96 tools
Search Console MCP tools by family, with parameters and links to server contracts.
This catalogue covers the full registry. Your server may expose fewer tools depending on enabled families. Sources require their own access; GA4 and CrUX are optional. Configure families →
analytics
Google metrics, equal-period contributions and same-weekday references.
ai_overviews_impactDiscover generic Web search appearances; AI exposure remains unverified.
ai_overviews_impact(site: str, days: int = 28, limit: int = 100) -> strRead the contract in source ↗analytics_anomaliesDetect days with statistically abnormal click volumes using z-score analysis.
analytics_anomalies(site: str, days: int = 90, threshold: float = 2.5) -> strRead the contract in source ↗compare_search_periodsCompare two consecutive equal-length windows and report delta in clicks and impressions.
compare_search_periods(site: str, days: int = 28) -> strRead the contract in source ↗discover_performanceGet Discover performance: top pages by impressions (Discover does not support query dimension).
discover_performance(site: str, days: int = 28, limit: int = 50) -> strRead the contract in source ↗get_advanced_search_analyticsFetch GSC search analytics with full control over search_type, data_state, dimensions, and row limit.
get_advanced_search_analytics(site: str, dimensions: list[str] | None = None, date_range_days: int = 28, row_limit: int = 1000, search_type: str = 'web', data_state: str | None = None) -> strRead the contract in source ↗get_performance_overviewSummarise total clicks, impressions, average CTR and average position for a site.
get_performance_overview(site: str, days: int = 28) -> strRead the contract in source ↗get_search_analyticsFetch GSC search analytics (clicks, impressions, CTR, position) for a site.
get_search_analytics(site: str, days: int = 28, dimensions: list[str] | None = None, row_limit: int = 1000) -> strRead the contract in source ↗get_search_by_page_queryFetch GSC data grouped by both page and query simultaneously.
get_search_by_page_query(site: str, days: int = 28, row_limit: int = 1000) -> strRead the contract in source ↗news_performanceGet Google News performance: top pages by impressions (News does not support query dimension).
news_performance(site: str, days: int = 28, limit: int = 50) -> strRead the contract in source ↗search_change_breakdownCompare equal explicit Google windows using independent bounded segment views.
search_change_breakdown(site: 'str', baseline_start: 'str', baseline_end: 'str', comparison_start: 'str', comparison_end: 'str', dimensions: 'list[str] | None' = None, filters: 'Optional[list[dict]]' = None, search_type: 'str' = 'web', data_state: 'str' = 'final', aggregation_type: 'str' = 'auto', row_limit: 'int' = 1000, max_requests: 'int' = 20, limit: 'int' = 50, output_max_bytes: 'int | None' = None) -> 'str'Read the contract in source ↗search_type_breakdownAggregate clicks and impressions broken down by search type for a site or specific URL.
search_type_breakdown(site: str, url: str | None = None, days: int = 28) -> strRead the contract in source ↗search_weekday_referenceDescribe eligible traffic against weekday, annual or robust daily references.
search_weekday_reference(site: 'str', days: 'int' = 28, end_date: 'str | None' = None, dimensions: 'list[str] | None' = None, filters: 'list[dict] | None' = None, search_type: 'str' = 'web', aggregation_type: 'str' = 'auto', row_limit: 'int' = 1000, max_requests: 'int' = 20, limit: 'int' = 50, reference_strategy: 'str' = 'weekday', history_days: 'int' = 56, min_support: 'int' = 6, context_json: 'str | None' = None) -> 'str'Read the contract in source ↗technical
Schema, crawler rules, PageSpeed and caller-supplied crawl previews, each with its own inputs.
ai_visibility_auditCheck robots.txt AI crawler access and llms.txt presence for a URL's origin.
crawl_diffCompare two site-owned local inventories without inferring deletion/indexing.
crawl_diff(site: 'str', baseline_id: 'str', comparison_id: 'str', limit: 'int' = 50, policy_fields: 'list[str] | None' = None) -> 'str'Read the contract in source ↗crawl_import_previewPreview a caller-supplied SiteOne JSON string in memory, within fixed size/row limits.
crawl_import_preview(report_json: str, producer: str = 'siteone') -> strRead the contract in source ↗crawl_log_auditStream one explicitly selected common/combined local log file with hard caps.
crawl_log_audit(log_path: 'str', site: 'str', profile: 'str' = 'combined', max_bytes: 'int' = 2097152, max_lines: 'int' = 20000, max_paths: 'int' = 1000, limit: 'int' = 50, include_paths: 'bool' = False, verify_googlebot: 'bool' = False) -> 'str'Read the contract in source ↗crawl_snapshot_deleteDelete one local site-owned imported snapshot only with explicit confirm=True.
crawl_snapshot_delete(site: 'str', snapshot_id: 'str', confirm: 'bool' = False) -> 'str'Read the contract in source ↗crawl_snapshot_importValidate a site-owned versioned inventory; persist=True explicitly stores it locally.
crawl_snapshot_import(report_json: 'str', site: 'str', producer: 'str' = 'siteone', persist: 'bool' = False) -> 'str'Read the contract in source ↗crawl_snapshot_joinReconcile one local inventory page with bounded caller-supplied MCP reports.
crawl_snapshot_join(site: 'str', snapshot_id: 'str', search_report_json: 'str | None' = None, link_report_json: 'str | None' = None, offset: 'int' = 0, limit: 'int' = 50) -> 'str'Read the contract in source ↗crawl_snapshot_readRead a bounded page of an immutable local inventory owned by the exact site.
crawl_snapshot_read(site: 'str', snapshot_id: 'str', offset: 'int' = 0, limit: 'int' = 50) -> 'str'Read the contract in source ↗gbp_deprecation_lintScan a page for deprecated Google Business Profile (GBP) features.
pagespeed_auditRun a PageSpeed Insights audit via Google's PSI API v5.
pagespeed_audit(url: str, strategy: str = 'mobile') -> strRead the contract in source ↗schema_generateGenerate a Schema.org JSON-LD block for one of four high-leverage types.
schema_generate(schema_type: str, provider: Optional[str] = None, start_time: Optional[str] = None, end_time: Optional[str] = None, party_size: Optional[int] = None, reservation_id: Optional[str] = None, reservation_for_name: Optional[str] = None, customer_name: Optional[str] = None, customer_email: Optional[str] = None, reservation_kind: str = 'FoodEstablishmentReservation', merchant: Optional[str] = None, order_url: Optional[str] = None, order_name: str = 'Order online', delivery_method: Optional[list[str]] = None, headline: Optional[str] = None, author: Optional[str] = None, url: Optional[str] = None, date_published: Optional[str] = None, text: Optional[str] = None, date_modified: Optional[str] = None, comment_count: Optional[int] = None, name: Optional[str] = None, profile_url: Optional[str] = None, description: Optional[str] = None, same_as: Optional[list[str]] = None, knows_about: Optional[list[str]] = None, works_for: Optional[str] = None, image: Optional[str] = None, job_title: Optional[str] = None) -> strRead the contract in source ↗schema_validateFetch a URL and validate its JSON-LD structured data schemas.
inspection
Google URL Inspection on a bounded sample. Search traffic alone does not prove indexing state.
batch_url_inspectionInspect up to 10 URLs at once in GSC. Returns the same fields as inspect_url for each URL.
batch_url_inspection(urls: list[str], site: str) -> strRead the contract in source ↗check_indexing_issuesInspect up to 10 URLs and return only those with indexing problems, plus a summary count by category.
check_indexing_issues(urls: list[str], site: str) -> strRead the contract in source ↗indexing_evidence_matrixReconcile an explicit URL sample with bounded supplied reports and a local snapshot.
indexing_evidence_matrix(site: 'str', urls: 'list[str]', reports_json: 'str' = '[]', snapshot_id: 'str | None' = None, max_reports: 'int' = 20) -> 'str'Read the contract in source ↗inspect_urlInspect a single URL in GSC to get its indexing status, last crawl time, and canonical URL.
bing
Verified sites, query/page performance, crawl signals and guarded submissions.
bing_crawl_issuesDecode Bing crawl issue flags using the synthetic-fixture contract.
bing_crawl_issues(site: 'str', limit: 'int' = 1000) -> 'str'Read the contract in source ↗bing_crawl_settings_getReturn only Bing's observed crawl-rate value from the partial contract.
bing_crawl_settings_get(site: 'str') -> 'str'Read the contract in source ↗bing_crawl_statsReturn dated Bing crawl counts inside the requested local window.
bing_crawl_stats(site: 'str', days: 'int' = 30) -> 'str'Read the contract in source ↗bing_feed_detailsReturn every Bing feed-detail row from the observed list response.
bing_feed_details(site: 'str', feed_url: 'str') -> 'str'Read the contract in source ↗bing_feed_removeExternal write: explicit target and confirmation required.
Remove a registered same-origin feed only after explicit confirmation.
bing_feed_remove(site: 'str', feed_url: 'str', confirm: 'bool' = False) -> 'str'Read the contract in source ↗bing_feed_submitExternal write: explicit target and confirmation required.
Submit one same-origin feed to Bing without claiming indexation.
bing_feed_submit(site: 'str', feed_url: 'str') -> 'str'Read the contract in source ↗bing_feeds_listReturn Bing feeds with only the observed, non-indexation fields.
bing_link_countsReturn one Bing page of backlink counts from a synthetic shape.
bing_link_counts(site: 'str', page: 'int' = 0) -> 'str'Read the contract in source ↗bing_page_query_statsReturn Bing query performance for one requested page.
bing_page_query_stats(site: 'str', page: 'str', days: 'int' = 30, limit: 'int' = 1000) -> 'str'Read the contract in source ↗bing_page_statsReturn Bing page performance, normalizing Bing's Query field to page.
bing_page_stats(site: 'str', days: 'int' = 30, limit: 'int' = 1000) -> 'str'Read the contract in source ↗bing_query_statsAggregate dated Bing rows by query within the requested local window.
bing_query_stats(site: 'str', days: 'int' = 30, limit: 'int' = 1000, daily: 'bool' = False) -> 'str'Read the contract in source ↗bing_rank_traffic_statsReturn Bing daily clicks and impressions without inventing rank fields.
bing_rank_traffic_stats(site: 'str', days: 'int' = 30) -> 'str'Read the contract in source ↗bing_sites_listReturn verified-state summaries for sites visible to the Bing account.
bing_url_infoReturn only fields observed from Bing URL info, without indexation claims.
bing_url_info(site: 'str', url: 'str') -> 'str'Read the contract in source ↗bing_url_linksReturn one Bing page of backlinks for the requested target URL.
bing_url_links(site: 'str', url: 'str', page: 'int' = 0) -> 'str'Read the contract in source ↗bing_url_submission_quotaReturn Bing quota integers without claiming total or remaining semantics.
bing_url_submission_quota(site: 'str') -> 'str'Read the contract in source ↗bing_url_submitExternal write: explicit target and confirmation required.
Submit one same-origin URL to Bing without claiming indexation.
bing_url_submit(site: 'str', url: 'str') -> 'str'Read the contract in source ↗bing_url_trafficReturn observed URL traffic and derived CTR without rank fields.
bing_url_traffic(site: 'str', url: 'str') -> 'str'Read the contract in source ↗bing_urls_submit_batchExternal write: explicit target and confirmation required.
Preflight a Bing URL batch and refuse while quota semantics are unknown.
bing_urls_submit_batch(site: 'str', urls: 'list[str]') -> 'str'Read the contract in source ↗seo
Opportunity candidates, traffic drops and declared-change follow-up. Heuristic diagnoses need review.
check_alertsScan for structural SEO risks: traffic concentration and high-impression low-rank pages.
check_alerts(site: str, days: int = 28, engine: str = 'google') -> strRead the contract in source ↗parasite_riskScan URL paths for parasite SEO patterns matching Google's 2024-11-19 site-reputation policy.
parasite_risk(site: str, urls: list[str]) -> strRead the contract in source ↗prune_candidatesClassify pages by measured traffic before any pruning decision is taken.
prune_candidates(site: str, days: int = 180, max_pages: int = 500, engine: str = 'google') -> strRead the contract in source ↗quick_winsIdentify pages ranking between positions 4-15 whose CTR is below the industry benchmark for their rank.
quick_wins(site: str, days: int = 28, min_impressions: int = 10, engine: str = 'google') -> strRead the contract in source ↗seo_cannibalizationDetect queries where multiple pages compete for the same ranking slot.
seo_cannibalization(site: str, days: int = 28, min_impressions: int = 50, engine: str = 'google', include_search_operators: bool = False) -> strRead the contract in source ↗seo_change_impactAssociate a caller event with equal explicit GSC before/after windows.
seo_change_impact(event: 'dict', baseline_start: 'str', baseline_end: 'str', comparison_start: 'str', comparison_end: 'str', filters: 'list[dict] | None' = None, search_type: 'str' = 'web', align_weekdays: 'bool' = False, page_mapping: 'dict | None' = None, concurrent_changes: 'list[str] | None' = None, row_limit: 'int' = 1000, max_requests: 'int' = 20, limit: 'int' = 50) -> 'str'Read the contract in source ↗seo_lost_queriesFind queries that had significant clicks previously but now have 80%+ fewer clicks.
seo_lost_queries(site: str, days: int = 28, engine: str = 'google') -> strRead the contract in source ↗seo_striking_distanceList queries ranking between positions 8-15, sorted by impressions descending.
seo_striking_distance(site: str, days: int = 28, min_impressions: int = 0, engine: str = 'google') -> strRead the contract in source ↗traffic_dropsFind queries whose clicks dropped compared to the previous equally-sized period.
traffic_drops(site: str, days: int = 28, engine: str = 'google') -> strRead the contract in source ↗cross
GSC and GA4 reports or Google and Bing comparisons, with source and window guards.
compare_search_enginesCompare Google and Bing query or page metrics without inferring causality.
compare_search_engines(google_site: 'str', bing_site: 'str', days: 'int' = 28, dimension: 'str' = 'query', limit: 'int' = 100) -> 'str'Read the contract in source ↗content_briefGather SEO content intelligence for a single page: top queries, question queries, and GA4 engagement.
content_brief(site: str, page_url: str, days: int = 90, property_id: str | None = None) -> strRead the contract in source ↗page_analysisJoin GSC and GA4 data at the page level and rank by opportunity score.
page_analysis(site: str, days: int = 28, limit: int = 100, property_id: str | None = None, hostname: str | None = None, country: str | None = None) -> strRead the contract in source ↗page_health_scoreCompute a 0-100 health score for a single page by combining GSC, GA4, CrUX, and schema data.
page_health_score(site: str, url: str, property_id: str | None = None, hostname: str | None = None, country: str | None = None) -> strRead the contract in source ↗traffic_health_checkCompare Google clicks and GA4 organic sessions over matching calendar dates.
traffic_health_check(site: str, days: int = 28, property_id: str | None = None, hostname: str | None = None, country: str | None = None) -> strRead the contract in source ↗content
Headings, metadata, canonical, hreflang and preload checks on fetched public HTML.
content_qualityAnalyse page content quality against Google QRG signals (E-E-A-T heuristics).
content_quality(url: 'str', extractor: 'str' = 'visible') -> 'str'Read the contract in source ↗heading_auditAudit the heading structure of a page: H1 uniqueness, hierarchy, and title overlap.
hreflang_auditFetch a URL and validate its hreflang implementation.
page_technical_auditAudit on-page technical SEO: meta tags, canonical, robots.txt, security headers.
page_technical_audit(url: 'str') -> 'str'Read the contract in source ↗preload_auditAudit Speculation Rules, bfcache eligibility, and LCP preload signals for a URL.
crux
CrUX Core Web Vitals where sufficient field data exists; separate API key required.
crux_historyFetch 40 weeks of Core Web Vitals history for a URL from the CrUX History API.
crux_history(url: str, form_factor: str = 'ALL_FORM_FACTORS', metric: str = 'largest_contentful_paint') -> strRead the contract in source ↗crux_lcp_subpartsDecompose LCP into its four subparts via the CrUX API for actionable performance diagnosis.
crux_lcp_subparts(url: str, form_factor: str = 'PHONE') -> strRead the contract in source ↗crux_page_vitalsFetch current Core Web Vitals (LCP, INP, CLS, FCP, TTFB) for a URL from the CrUX API.
crux_page_vitals(url: str, form_factor: str = 'ALL_FORM_FACTORS') -> strRead the contract in source ↗drift
Capture and compare locally stored page baselines. Persistence is explicit.
drift_baselineCapture an SEO baseline snapshot for a URL.
drift_baseline(url: 'str', skip_cwv: 'bool' = False) -> 'str'Read the contract in source ↗drift_compareCompare current page state to a stored baseline and report SEO drift.
drift_compare(url: 'str', baseline_id: 'Optional[int]' = None, skip_cwv: 'bool' = False) -> 'str'Read the contract in source ↗drift_historyReturn recent drift comparisons for a URL.
drift_history(url: 'str', limit: 'int' = 10) -> 'str'Read the contract in source ↗editorial
FR/EN review warnings and protected-literal comparisons. No authorship or semantic certification.
editorial_auditReview narrow FR/EN editorial house rules, preserving quoted examples/code.
editorial_audit(url: str | None = None, language: str = 'auto', genre: str = 'general', *, text: str | None = None, format: str = 'plain') -> strRead the contract in source ↗rewrite_fidelity_checkCompare protected literals/qualifiers in supplied text; semantics unassessed.
rewrite_fidelity_check(original: str, revised: str, language: str = 'en', format: str = 'plain') -> strRead the contract in source ↗ga4
Sessions, engagement, events and AI referrers, when the GA4 property is configured.
ga4_ai_referralsReport observed GA4 visits attributed to exact documented assistant sources.
ga4_ai_referrals(start_date: str, end_date: str, property_id: str | None = None, hostname: str | None = None) -> strRead the contract in source ↗ga4_conversion_funnelFetch GA4 conversion data: pages that generated conversions, and event counts.
ga4_conversion_funnel(start_date: str = '28daysAgo', end_date: str = 'today', event_name: str | None = None, property_id: str | None = None, hostname: str | None = None, country: str | None = None) -> strRead the contract in source ↗ga4_funnelRun a GA4 funnel report using the v1alpha RunFunnelReport API.
ga4_funnel(steps: list[dict], start_date: str, end_date: str, property_id: str | None = None) -> strRead the contract in source ↗ga4_organic_landing_pagesFetch GA4 landing page performance filtered to organic traffic only.
ga4_organic_landing_pages(start_date: str = '28daysAgo', end_date: str = 'today', limit: int = 50, property_id: str | None = None, hostname: str | None = None, country: str | None = None) -> strRead the contract in source ↗ga4_page_performanceFetch GA4 page-level metrics: views, active users, session duration, engagement and bounce rates, conversions, and revenue.
ga4_page_performance(start_date: str = '28daysAgo', end_date: str = 'today', page_path: str | None = None, property_id: str | None = None, hostname: str | None = None, country: str | None = None) -> strRead the contract in source ↗ga4_realtimeFetch active users in the last 30 minutes from the GA4 Realtime API.
ga4_realtime(property_id: str | None = None, hostname: str | None = None) -> strRead the contract in source ↗ga4_traffic_sourcesFetch GA4 sessions grouped by channel group, source, and medium.
ga4_traffic_sources(start_date: str = '28daysAgo', end_date: str = 'today', property_id: str | None = None, hostname: str | None = None, country: str | None = None) -> strRead the contract in source ↗ga4_user_behaviorFetch GA4 sessions and engagement rate broken down by device, country, and user type.
ga4_user_behavior(start_date: str = '28daysAgo', end_date: str = 'today', property_id: str | None = None, hostname: str | None = None, country: str | None = None) -> strRead the contract in source ↗core
Discover tools and source properties.
get_capabilitiesList configured MCP tools and declared search-engine credentials.
get_site_detailsGet the permission level for a specific GSC property URL.
list_propertiesList all GSC properties the authenticated account can access, with their permission levels.
indexing
Eligible Google Indexing API and IndexNow submissions. Acceptance proves neither crawling nor indexing.
indexnow_submitExternal write: explicit target and confirmation required.
Submit URLs to IndexNow, notifying Bing, Yandex, Seznam, and Naver simultaneously.
indexnow_submit(site: str, key: str, urls: list[str]) -> strRead the contract in source ↗submit_batchExternal write: explicit target and confirmation required.
Submit multiple URLs to the Google Indexing API in HTTP batches of 100.
submit_batch(urls: list[str], url_type: str = 'URL_UPDATED') -> strRead the contract in source ↗submit_urlExternal write: explicit target and confirmation required.
Submit a single URL to the Google Indexing API for crawl notification.
submit_url(url: str, url_type: str = 'URL_UPDATED') -> strRead the contract in source ↗links
Link zones, sampled graphs and bounded HTTP destination checks; no site-wide orphan proof.
internal_links_auditAudit the internal linking of a single page, weighted by where each link sits.
internal_links_audit(url: 'str') -> 'str'Read the contract in source ↗link_equity_mapMap internal link flow across a site's most-visible pages and cross it with GSC.
link_equity_map(site: 'str', days: 'int' = 90, max_pages: 'int' = 25, delay_seconds: 'float' = 0.2) -> 'str'Read the contract in source ↗link_targets_auditCheck one page's internal HTTP(S) link targets, retaining every anchor.
link_targets_audit(url: 'str', max_targets: 'int' = 30, max_requests: 'int' = 60) -> 'str'Read the contract in source ↗sitemaps
Submitted sitemap status and declared URLs compared with search visibility.
list_sitemapsList all sitemaps submitted to a GSC property, with submission dates, status, and error counts.
sitemap_auditFetch a sitemap and compare its URLs with pages visible in Search Analytics.
sitemap_audit(site: str, sitemap_url: str) -> strRead the contract in source ↗sitemaps_deleteExternal write: explicit target and confirmation required.
Delete a submitted sitemap from a GSC property.
sitemaps_delete(site: str, sitemap_url: str) -> strRead the contract in source ↗sitemaps_getGet details for a specific sitemap already submitted to a GSC property.
sitemaps_get(site: str, sitemap_url: str) -> strRead the contract in source ↗submit_sitemapExternal write: explicit target and confirmation required.
Submit a new sitemap URL to a GSC property. If already submitted, GSC updates the existing entry.
submit_sitemap(site: str, sitemap_url: str) -> strRead the contract in source ↗