Google Webtools MCP
OCI · GHCR.IO/STUFENTLY/GOOGLE-WEBTOOLS-MCP
Google Search Console + GA4 for AI agents: properties, reports, indexing, verification, SEO.
Available components
Last scanned (20 hours ago)
Scores higher than 58% of OCI servers
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability72
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5455 tokens (~139/item across 39 items; 39 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
- Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 99% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 39 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Oct 26 +1
- Stability: unverified → 0.07 ▲ functional
- 15 Oct 26 +31
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Tool coverage: 99 functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 100 functional
- 14 Oct 26 0
- Package version: 1.2.1 → 1.2.2 functional
- 11 Oct 26 10
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 17 Oct 2026 · Analysed oci/ghcr.io/stufently/google-webtools-mcp@1.2.2
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_property ~112
Register a site URL or a domain as a Google Search Console property on the authenticated account. Use when the user asks to add a site to Search Console. Adding a property does not verify it. Call gsc_get_verification_token and then gsc_verify_site to prove ownership, and call list_properties to see sites that are already listed.
| Name | Type | Req | Description |
|---|---|---|---|
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
analyze_query_landscape ~151
Classify the Search Console queries of a property by intent, branded versus non-branded demand, and position band. Use when the user wants the shape of search demand rather than a list of winners. Call find_new_queries for queries that just appeared, and call find_cannibalization when several pages share one query.
| Name | Type | Req | Description |
|---|---|---|---|
| minImpressions | integer | – | Minimum impressions for a query to be included |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
batch_inspect_urls ~161
Inspect up to 50 URLs in one call and group them into indexed, not indexed, and errors. Indexed URLs show coverage state and last crawl; not-indexed URLs show verdict, coverage state, robots.txt state, and page fetch state; URLs without index data are listed as errors. Use when the user hands over a list of URLs to check. Call inspect_url for a single URL, and call check_indexing_issues when they want the top traffic pages audited without supplying the list.
| Name | Type | Req | Description |
|---|---|---|---|
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
| urls | array | yes | Array of URLs to inspect (max 50) |
No output schema declared.
No examples provided.
check_indexing_issues ~127
Audit the top traffic pages of a property for indexing failures, canonical mismatches, missing canonicals, and mobile problems. Use when the user wants an indexing health pass rather than a check of URLs they already named. Call inspect_url or batch_inspect_urls when they already have the URL list.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Number of top pages to check (default 20, max 100) |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
compare_periods ~208
Compare Search Console clicks, impressions, CTR, and position between two explicit date ranges, optionally grouped by a dimension. Use when the user names a before and an after, such as a release or a season. Call get_performance_summary when they want the latest period against the one just before it, without choosing dates.
| Name | Type | Req | Description |
|---|---|---|---|
| dimensions | array | – | Dimensions to group by |
| period1EndDate | string | yes | Period 1 end date (YYYY-MM-DD) |
| period1StartDate | string | yes | Period 1 start date (YYYY-MM-DD) |
| period2EndDate | string | yes | Period 2 end date (YYYY-MM-DD) |
| period2StartDate | string | yes | Period 2 start date (YYYY-MM-DD) |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
delete_property ~108
Remove a Google Search Console property from the authenticated account site list. Use when the user explicitly asks to drop a property. The property can be added back later, and this call does not erase historical data held by Google. Call delete_sitemap to withdraw a sitemap instead, and call add_property to register the site again.
| Name | Type | Req | Description |
|---|---|---|---|
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
delete_sitemap ~134
Withdraw a previously submitted sitemap from a Google Search Console property. Use when the user asks to remove a stale, duplicated, or broken sitemap. Removing the sitemap does not drop its URLs from the Google index. Call submit_sitemap to file that feed again, and call list_sitemaps to see what is still submitted.
| Name | Type | Req | Description |
|---|---|---|---|
| feedpath | string | yes | The URL of the sitemap (e.g., "https://example.com/sitemap.xml") |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
find_cannibalization ~196
Detect queries where more than one page of the property ranks, and name the page that wins the clicks. Use when the user asks whether their own pages compete for the same query. Call find_content_gaps when the query lands on the wrong page, and call get_top_pages for a plain page ranking.
| Name | Type | Req | Description |
|---|---|---|---|
| minImpressions | integer | – | Minimum total impressions for a query to be evaluated for cannibalization |
| minPageImpressions | integer | – | Minimum impressions one page needs before it counts as a real contender. Queries where only a single page clears this bar are reported as low-volume and get no consolidation advice. |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
find_content_gaps ~153
Find Search Console queries that land on the wrong page, high-impression queries with no clicks, and topics that still need a dedicated page. Use when the user asks what content is missing. Call find_what_to_build_next to group that demand by intent, and call find_cannibalization when several pages already compete for one query.
| Name | Type | Req | Description |
|---|---|---|---|
| minImpressions | number | – | Minimum impressions to consider a query |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
find_ctr_opportunities ~150
Find pages whose Search Console click-through rate sits well below the benchmark for their average position, with a fix note for each page. Use when the user asks which titles or snippets are wasting impressions. Call find_quick_wins for query and page pairs near page one, and call get_top_pages for a plain traffic ranking.
| Name | Type | Req | Description |
|---|---|---|---|
| minImpressions | number | – | Minimum impressions to include a page |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
find_declining_content ~156
Compare the current Search Console period with the previous one and rank the pages and the queries that lost clicks. Use when the user asks what stopped getting traffic or what dropped recently. Call find_quick_wins for under-clicked rankings that are not necessarily declining, and call weekly_seo_report for a full weekly digest.
| Name | Type | Req | Description |
|---|---|---|---|
| minClicksInPrevious | number | – | Minimum clicks in the previous period to consider a page or query |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
find_new_queries ~149
Find queries that are new or rising fast by diffing this Search Console period against the previous one. Use when the user asks what people started searching recently. Call analyze_query_landscape for the overall mix of intent, and call find_what_to_build_next when they want those queries grouped into topics to write.
| Name | Type | Req | Description |
|---|---|---|---|
| minImpressions | integer | – | Minimum impressions in the current period to be included |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
find_quick_wins ~158
Find query and page pairs that rank well but are under-clicked, sit just off page one, or would gain clicks from a small position push. Use when the user asks where search traffic is being left on the table. Call find_ctr_opportunities for page-level CTR gaps, and call find_declining_content when the problem is traffic that is already falling.
| Name | Type | Req | Description |
|---|---|---|---|
| minImpressions | number | – | Minimum impressions to consider a query |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
find_what_to_build_next ~152
Group Search Console queries by user intent, covering questions, comparisons, problems, and buying signals, into topic clusters for what to write next. Use when the user asks what content to create. Call find_content_gaps for mismatched landing pages and zero-click queries, and call analyze_query_landscape for the overall intent mix.
| Name | Type | Req | Description |
|---|---|---|---|
| minImpressions | number | – | Minimum impressions to consider a query |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
ga4_create_data_stream ~150
Create a web data stream on a Google Analytics 4 property and return its measurement id for the tag. Use when the user needs a measurement id to install analytics on a site. This server cannot delete the stream afterwards. Call ga4_list_data_streams if a stream may already exist, and call ga4_create_property first when the property itself does not exist yet.
| Name | Type | Req | Description |
|---|---|---|---|
| property_id | string | yes | GA4 property ID (e.g., "123456" or "properties/123456") |
| stream_name | string | – | Display name for the stream (defaults to hostname) |
| url | string | yes | Website URL for the data stream (e.g., "https://example.com") |
No output schema declared.
No examples provided.
ga4_create_property ~183
Create a new Google Analytics 4 property under an account, with a display name, timezone, and currency. Use when the user asks to provision a GA4 property. This server cannot remove the property afterwards. Call ga4_list_properties to see properties that already exist, and call ga4_create_data_stream next when they need a measurement id.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | GA4 account ID (e.g., "123456" or "accounts/123456") |
| currency_code | string | – | Currency code (e.g., "USD", "EUR") |
| display_name | string | yes | Display name for the new property |
| industry_category | string | – | Industry category (e.g., "TECHNOLOGY", "FINANCE") |
| timezone | string | yes | Reporting timezone (e.g., "America/New_York", "Europe/Moscow") |
No output schema declared.
No examples provided.
ga4_get_data_stream ~111
Read one Google Analytics 4 data stream, including its measurement id, default URI, and created and updated times. Use when the user names a stream and wants its measurement id or settings. Call ga4_list_data_streams when the stream id is not known yet.
| Name | Type | Req | Description |
|---|---|---|---|
| property_id | string | yes | GA4 property ID (e.g., "123456" or "properties/123456") |
| stream_id | string | yes | Data stream ID (numeric, e.g., "789012") |
No output schema declared.
No examples provided.
ga4_get_metadata ~88
List the dimensions and metrics a Google Analytics 4 property accepts, including custom definitions. Use when a report needs valid metric and dimension names and guessing would be wrong. Call ga4_run_report once the names are known; this tool does not return the numbers.
| Name | Type | Req | Description |
|---|---|---|---|
| property_id | string | yes | GA4 property ID (e.g., "123456" or "properties/123456") |
No output schema declared.
No examples provided.
ga4_get_property ~94
Read one Google Analytics 4 property display name, timezone, currency, industry, and parent account. Use when the user asks how a known property is configured. Call ga4_list_properties to find the id first, and call ga4_list_data_streams for the streams on that property.
| Name | Type | Req | Description |
|---|---|---|---|
| property_id | string | yes | GA4 property ID (e.g., "123456" or "properties/123456") |
No output schema declared.
No examples provided.
ga4_list_accounts ~66
List every Google Analytics 4 account the credentials can reach, and the properties under each account. Use when the user does not yet know the account or property id. Call ga4_list_properties when they already named an account, and call ga4_get_property for one property settings.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ga4_list_data_streams ~100
List the data streams on a Google Analytics 4 property, including each web stream measurement id and default URI. Use when the user asks which streams or measurement ids a property already has. Call ga4_get_data_stream for one stream, and call ga4_create_data_stream only when they want a new stream.
| Name | Type | Req | Description |
|---|---|---|---|
| property_id | string | yes | GA4 property ID (e.g., "123456" or "properties/123456") |
No output schema declared.
No examples provided.
ga4_list_properties ~93
List Google Analytics 4 properties under one account, including timezone, currency, and when each property was created. Use when the user names an account and wants its properties. Call ga4_list_accounts when the account id is unknown, and call ga4_get_property to open one property.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | GA4 account ID (e.g., "123456" or "accounts/123456") |
No output schema declared.
No examples provided.
ga4_run_realtime_report ~152
Run a Google Analytics 4 realtime report of active users and on-site activity from the last thirty minutes. Use when the user asks who is on the site right now. Call ga4_run_report for any date range older than that live window, and call ga4_get_metadata if a realtime metric name is rejected.
| Name | Type | Req | Description |
|---|---|---|---|
| dimensions | array | – | Realtime dimensions (e.g., ["country", "city", "unifiedScreenName"]) |
| metrics | array | yes | Realtime metrics (e.g., ["activeUsers", "screenPageViews", "conversions"]) |
| property_id | string | yes | GA4 property ID (e.g., "123456" or "properties/123456") |
No output schema declared.
No examples provided.
ga4_run_report ~229
Run a Google Analytics 4 report for chosen metrics, dimensions, and an absolute or relative date range. Use when the user asks for historical GA4 numbers such as users, sessions, or page views. Call ga4_run_realtime_report for who is on the site right now, and call ga4_get_metadata before guessing a custom metric name.
| Name | Type | Req | Description |
|---|---|---|---|
| dimensions | array | – | Dimensions to group by (e.g., ["date", "country", "pagePath"]) |
| end_date | string | yes | End date: YYYY-MM-DD or relative ("yesterday", "today") |
| limit | number | – | Maximum rows to return (1-100000, default 100) |
| metrics | array | yes | Metrics to retrieve (e.g., ["activeUsers", "sessions", "screenPageViews"]) |
| property_id | string | yes | GA4 property ID (e.g., "123456" or "properties/123456") |
| start_date | string | yes | Start date: YYYY-MM-DD or relative ("7daysAgo", "30daysAgo", "yesterday", "today") |
No output schema declared.
No examples provided.
get_performance_summary ~141
Summarize clicks, impressions, CTR, and average position for one property against the previous period of the same length. Use when the user asks how search traffic is doing over a named period such as the last 28 days. Call compare_periods when they name two specific date ranges, and call get_search_analytics when they need the raw rows.
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
get_property_details ~92
Read the type, permission level, and verification state of one Google Search Console property. Use when the user names a specific site and wants to know how that property is registered. Call list_properties when the property URL is not known yet.
| Name | Type | Req | Description |
|---|---|---|---|
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
get_search_analytics ~272
Query raw Google Search Console search analytics with explicit dates, dimensions, filters, search type, row limit, and data state. Use when the user needs a custom breakdown that the shaped reports do not offer. Call get_performance_summary for a period overview, call get_top_queries or get_top_pages for a ranking, and call compare_periods for two named date ranges.
| Name | Type | Req | Description |
|---|---|---|---|
| aggregationType | string | – | – |
| dataState | string | – | "final" = finalized data only (the API's own default; the newest days are simply absent until they settle), "all" = also includes the freshest days, whose numbers may still change |
| dimensions | array | – | Dimensions to group by (e.g. query, page, date, country, device, searchAppearance) |
| endDate | string | yes | End date in YYYY-MM-DD format |
| filters | array | – | Dimension filters to apply |
| rowLimit | number | – | Maximum rows to return (1-25000) |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
| startDate | string | yes | Start date in YYYY-MM-DD format |
No output schema declared.
No examples provided.
get_sitemap_details ~124
Read one submitted sitemap, including its type, last download, URL counts by content type, and error and warning totals. Use when the user names a sitemap and wants its processing status. Call list_sitemaps when they do not yet know which feed to open.
| Name | Type | Req | Description |
|---|---|---|---|
| feedpath | string | yes | The URL of the sitemap (e.g., "https://example.com/sitemap.xml") |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
get_top_pages ~173
List the top Search Console pages by clicks and score each page against the CTR benchmark for its position. Use when the user asks which URLs earn the search traffic. Call get_top_queries for queries, call get_traffic_by_device for a device split, and call find_ctr_opportunities for pages far below the benchmark.
| Name | Type | Req | Description |
|---|---|---|---|
| device | string | – | Filter by device type |
| limit | number | – | Number of top pages to return |
| period | string | – | Predefined date range period |
| query | string | – | Filter to pages matching a specific query (contains match) |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
get_top_queries ~193
List the top Search Console queries by clicks and score each query against the CTR benchmark for its position. Use when the user asks which queries bring traffic or which queries underperform their rank. Call get_top_pages for pages rather than queries, and call find_quick_wins for opportunity buckets instead of a plain ranking.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Filter by country code (e.g. "USA", "GBR") |
| device | string | – | Filter by device type |
| limit | number | – | Number of top queries to return |
| page | string | – | Filter to a specific page URL (contains match) |
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
get_traffic_by_device ~126
Split Search Console clicks, impressions, CTR, and average position across desktop, mobile, and tablet. Use when the user asks whether one device is underperforming the others. Call get_top_pages or get_top_queries when they want the pages or queries behind that device split.
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | – | Predefined date range period |
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
gsc_get_verification_token ~130
Request a site-verification token for FILE, DNS_TXT, META, or ANALYTICS, and the steps for placing that token. Use when the user needs the token before they can prove they own a site. Call gsc_verify_site only after the token is in place. Domain properties cannot use FILE or META; call this tool with DNS_TXT for those.
| Name | Type | Req | Description |
|---|---|---|---|
| method | string | yes | Verification method to use |
| site_url | string | yes | Site URL or domain to verify (e.g., "https://example.com/" or "example.com" for domain verification) |
No output schema declared.
No examples provided.
gsc_verify_site ~126
Record Google site ownership for a URL or a domain once the verification token is already in place. Use when the user says the file, DNS record, meta tag, or Analytics tag is published and asks to finish verification. Call gsc_get_verification_token first if they do not have a token yet. This does not add the Search Console property; call add_property for that.
| Name | Type | Req | Description |
|---|---|---|---|
| method | string | yes | Verification method that was configured |
| site_url | string | yes | Site URL or domain to verify (e.g., "https://example.com/" or "example.com") |
No output schema declared.
No examples provided.
inspect_url ~130
Inspect one URL in the Google Search Console index for coverage, mobile usability, and rich-result verdicts, including the issues behind a failure. Use when the user asks why a single URL is missing from search or looks wrong. Call batch_inspect_urls for a list of URLs, and call check_indexing_issues to audit the top traffic pages of the property.
| Name | Type | Req | Description |
|---|---|---|---|
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
| url | string | yes | The fully qualified URL to inspect |
No output schema declared.
No examples provided.
list_properties ~67
List every Google Search Console property the credentials can access, including each property type and permission level. Use when the user wants to see which sites they can query before choosing one. Call get_property_details for a single known property, and call add_property only when they ask to register a new site.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_sitemaps ~111
List the sitemaps submitted for one Google Search Console property, with status, URL counts, and error flags. Use when the user asks which sitemaps are filed or whether Google reports sitemap problems. Call get_sitemap_details to open one feed, and call submit_sitemap only when they want to file a sitemap.
| Name | Type | Req | Description |
|---|---|---|---|
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
seo_health_check ~125
Score a Search Console property from A to F, with sub-scores for traffic trend, CTR efficiency, position distribution, and sitemap health. Use when the user asks how healthy the site is in search or wants a grade. Call weekly_seo_report for the narrative digest, and call find_declining_content when they already know traffic fell.
| Name | Type | Req | Description |
|---|---|---|---|
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
submit_sitemap ~139
Submit a sitemap URL to Google Search Console so Google can discover the pages of that property. Use when the user has published or moved a sitemap and asks to file it. Submitting the same feed again refreshes it and does not delete anything. Call delete_sitemap to withdraw a feed, and call get_sitemap_details to check processing afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| feedpath | string | yes | The URL of the sitemap (e.g., "https://example.com/sitemap.xml") |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
weekly_seo_report ~125
Build a one-call weekly SEO digest with traffic versus last week, top growers and decliners, quick wins, sitemap health, and prioritized recommendations. Use when the user asks for a weekly report or a regular status update. Call seo_health_check for a letter grade, and call get_performance_summary when they only want the headline numbers.
| Name | Type | Req | Description |
|---|---|---|---|
| searchType | string | – | Search type to analyze |
| siteUrl | string | yes | The site URL exactly as it appears in Google Search Console (e.g., "https://example.com/" or "sc-domain:example.com") |
No output schema declared.
No examples provided.
How do I install the Google Webtools MCP server?
Google Webtools MCP runs locally as a container image, launched with docker run --rm -i -e GOOGLE_SERVICE_ACCOUNT_KEY ghcr.io/stufently/google-webtools-mcp:1.2.2. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/stufently/google-webtools-mcp
claude mcp add stufently-google-webtools-mcp -- docker run --rm -i -e GOOGLE_SERVICE_ACCOUNT_KEY ghcr.io/stufently/google-webtools-mcp:1.2.2
This image reads GOOGLE_SERVICE_ACCOUNT_KEY. Set it in your client's env block for this server; docker run -e passes it through to the container.
What is the Google Webtools MCP server?
Google Webtools MCP is listed in the public MCP registry as io.github.stufently/google-webtools-mcp. Google Search Console + GA4 for AI agents: properties, reports, indexing, verification, SEO. This page covers its container image (ghcr.io/stufently/google-webtools-mcp).
Is the Google Webtools MCP server safe to use?
Google Webtools MCP scores 42 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Google Webtools MCP server expose?
Google Webtools MCP exposes 39 tools: list_properties, get_property_details, add_property, delete_property, list_sitemaps, and 34 more. Their descriptions and schemas cost roughly 5,455 tokens of context every time the server is loaded.
Is the Google Webtools MCP server still maintained?
Google Webtools MCP is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Google Webtools MCP server under?
Google Webtools MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.