[Overview](/index.md) › All 32 tools

Reference

# All 32 tools

What each tool does, grouped by the job you would reach for it to do, followed by how results are shown, what they carry, where the limits are, and real output from the hosted instance.

## The tools, by job

Every tool that reads a property also takes `site_url`, so one connection covers every property your Google account can see. Ask for `list_properties` to get the exact strings: `sc-domain:example.com` and `https://example.com/` are different properties with different data.

### Find the opportunity

Where the traffic you do not have yet is hiding.

| `quick_wins` | Keywords at positions 4–15 worth pushing to page one |
| --- | --- |
| `ctr_opportunities` | Pages with the impressions but a CTR far below par for their position |
| `content_gaps` | Demand you already get impressions for but rank beyond 20 |
| `content_recommendations` | Quick wins, gaps and cannibalisation cross-referenced into actions |
| `topic_cluster_performance` | How a group of pages performs as one thing |

[Find the opportunity: parameters and a real example →](/tools/opportunities.md)

### Diagnose the problem

What changed, and whether it was ranking, CTR or demand.

| `traffic_drops` | The biggest losses, each with a diagnosed cause |
| --- | --- |
| `content_decay` | Pages declining across three consecutive 30-day periods |
| `cannibalization_check` | Queries where your own pages compete with each other |
| `check_alerts` | Position drops, CTR collapses, and pages gone from results |
| `ctr_vs_benchmark` | Your CTR per page against the benchmark for that position |

[Diagnose the problem: parameters and a real example →](/tools/diagnostics.md)

### Look it up

The direct questions, answered against live data.

| `site_snapshot` | Clicks, impressions, CTR and position against the prior period |
| --- | --- |
| `advanced_search_analytics` | A custom query with your own dimensions and filters |
| `inspect_url` | Whether a URL is indexed, and why it is not |
| `verify_claim` | Check a number against live data before it goes in the deck |
| `generate_report` | A full markdown performance report |
| `multi_site_dashboard` | One health check across many properties at once |
| `list_properties` | Every property this account can reach, with permission level |
| `list_sitemaps` | Submitted sitemaps with status, errors and indexed counts |

[Look it up: parameters and a real example →](/tools/lookups.md)

### Image search

Google's `type=image` surface, which most tools skip entirely.

| `image_keyword_overview` | Top image-search keywords for the site |
| --- | --- |
| `image_search_quick_wins` | Image queries at positions 4–15 with real impressions |
| `image_pages_overview` | Pages ranked by image-search performance |
| `image_keyword_trends` | Period-over-period movement for image queries |
| `image_impressions_no_clicks` | Real image impressions earning effectively zero clicks |
| `image_content_decay` | The decay check, run against image search |
| `compare_web_vs_image` | Each query side by side across web and image |
| `image_page_audit` | Audits images on your own pages for what drives image ranking |

[Image search: parameters and a real example →](/tools/image-search.md)

### AI search, and your account

The newer surface, plus the controls over your own data.

| `genai_conversation_queries` | AI-conversation exhaust hiding in ordinary query data |
| --- | --- |
| `set_default_property` | Save a default property so later calls can omit it |
| `export_my_data` | Everything this server stores about you |
| `disconnect_account` | Erase all of it and end your sessions |

[AI search, and your account: parameters and a real example →](/ai-mode-queries.md)

The two indexing tools, `submit_url` and `submit_sitemap`, are part of the software but cannot run on this hosted instance: they need write access to your Google account, which this service never requests. They work on a [self-hosted install](/self-host.md) configured with wider scopes. `submit_url` takes one URL or up to 200.

## Interactive views

10 tools come with a view: in a client that supports the MCP Apps extension, the result is drawn as cards and sortable tables beside the conversation. A client without it shows the same result as text. Either way Claude reads the same data, so the analysis does not depend on the view.

Search Console · sc-domain:example.com

Quick wins

Queries at positions 4–15 that could reach page one · last 28 days

| Query | Position | Impressions | CTR | Extra clicks |
| --- | --- | --- | --- | --- |
| search console mcp server | 4.2 | 5,200 | 1.2% | 410 |
| connect search console to claude | 5.4 | 4,780 | 1.4% | 368 |
| image seo audit tool | 6.6 | 4,360 | 1.6% | 326 |
| content decay checker | 8.4 | 3,730 | 1.9% | 263 |

`quick_wins`: sortable by any column in the client, with the estimated gain drawn to scale. Sample data, drawn to show the layout.

Search Console · sc-domain:example.com

Alerts

Changes that need attention · last 7 days

Critical

2

Warning

1

Total

3

| Severity | Query and page | What changed |
| --- | --- | --- |
| critical | search console mcp on /gsc/ | Clicks dropped from 100 to 30 (70% decline) |
| critical | seo audit on /audit/ | Had 25 clicks in the prior period, zero now |
| warning | claude seo on / | CTR dropped from 10% to 4% (60% decline) |

`check_alerts`: what crossed a threshold, most severe first. Sample data, drawn to show the layout.

| Tool | What the view shows |
| --- | --- |
| `quick_wins` | Keywords at positions 4–15 worth pushing to page one |
| `ctr_opportunities` | Pages with the impressions but a CTR far below par for their position |
| `content_gaps` | Demand you already get impressions for but rank beyond 20 |
| `traffic_drops` | The biggest losses, each with a diagnosed cause |
| `content_decay` | Pages declining across three consecutive 30-day periods |
| `cannibalization_check` | Queries where your own pages compete with each other |
| `check_alerts` | Position drops, CTR collapses, and pages gone from results |
| `ctr_vs_benchmark` | Your CTR per page against the benchmark for that position |
| `site_snapshot` | Clicks, impressions, CTR and position against the prior period |
| `multi_site_dashboard` | One health check across many properties at once |

The view is one small page that runs in the client's sandbox. It loads nothing from the network except one font from this site, follows no links, and treats every query and URL in a result as text, never as markup. Only tools that read have a view.

## What every result carries

- **Provenance.** A `_meta` block names the source, the tool, the exact parameters and the property the numbers came from.
- **A typed copy.** The same result is returned as structured content as well as JSON text, and the ten tools with a view declare its shape in advance, so a client can rely on the fields.
- **A warning about borrowed text.** Search queries and page URLs are written by other people. Each result says so, and tells the model never to follow instructions found inside them.
- **Position, labelled honestly.** It is the impression-weighted average Search Console reports, not a rank-tracker position.

## Limits and errors

| What | Behaviour |
| --- | --- |
| Date range | `days` is 1 to 480, the 16 months Search Console keeps. A value outside it is refused before any call to Google. |
| Rows returned | Tools return their top rows (usually 50). `advanced_search_analytics` takes `row_limit` up to 500. |
| Requests | 60 a minute per person by default; a batch counts once per message in it. Over the limit the server answers `429` and says when to retry. |
| Google's failures | A read that Google answers with a rate-limit or server error is retried twice. Writes and timeouts are never retried. |
| Error messages | Plain words and a next step: no access to that property (ask for `list_properties`), quota reached (wait), sign-in revoked (reconnect), or Google's own outage. |
| Erasing your account | `disconnect_account` takes two calls: the first explains what will be erased, the second confirms it. |

## Real answers

One response per tool group, from this hosted instance against the author's own site, k-o.pro, on the date in each caption. They are shown as they came back, indented for reading, with rows trimmed where the caption says so. Results today also carry the borrowed-text warning described above, which was added after these were captured.

**Find the opportunity · `quick_wins`**

**Asked:** “What is k-o.pro almost ranking for? It's a small site, so go down to 5 impressions and position 20.”  
`quick_wins` on the hosted instance, 13 October 2026

```json
{
  "_meta": {
    "source": "Google Search Console API (live data)",
    "tool": "quick_wins",
    "parameters": {
      "days": 90,
      "min_impressions": 5,
      "max_position": 20,
      "site_url": "sc-domain:k-o.pro"
    },
    "note": "All numbers in this response come directly from the Google Search Console API. They are exact values, not estimates. Base your analysis only on this data. Do not invent or assume additional context."
  },
  "data": [
    {
      "query": "canonical check",
      "clicks": 0,
      "impressions": 22,
      "ctr": 0,
      "position": 15.6,
      "opportunity": 2
    }
  ]
}
```

One query qualifies on a site this size: "canonical check", 22 impressions at an average position of 15.6. The parameters Claude actually passed are in \_meta, so the lowered thresholds are on the record rather than implied.

**Diagnose the problem · `cannibalization_check`**

**Asked:** “Is anything on k-o.pro competing with itself over the last 90 days?”  
`cannibalization_check` on the hosted instance, 13 October 2026; first 2 of 7 queries shown

```json
{
  "_meta": {
    "source": "Google Search Console API (live data)",
    "tool": "cannibalization_check",
    "parameters": {
      "days": 90,
      "min_impressions": 10,
      "site_url": "sc-domain:k-o.pro"
    },
    "note": "All numbers in this response come directly from the Google Search Console API. They are exact values, not estimates. Base your analysis only on this data. Do not invent or assume additional context."
  },
  "data": [
    {
      "query": "bulk redirect checker",
      "totalImpressions": 98,
      "pages": [
        {
          "page": "https://k-o.pro/bulk-redirect-checker/",
          "clicks": 0,
          "impressions": 21,
          "position": 17.5
        },
        {
          "page": "https://k-o.pro/bulk-redirect-checker",
          "clicks": 0,
          "impressions": 77,
          "position": 77.1
        }
      ]
    },
    {
      "query": "url checker bulk",
      "totalImpressions": 48,
      "pages": [
        {
          "page": "https://k-o.pro/bulk-redirect-checker/",
          "clicks": 0,
          "impressions": 11,
          "position": 83.9
        },
        {
          "page": "https://k-o.pro/bulk-redirect-checker",
          "clicks": 0,
          "impressions": 37,
          "position": 85.7
        }
      ]
    }
  ]
}
```

The competing pages are the same tool at two URLs that differ only by a trailing slash. For "bulk redirect checker" the slash version averages position 17.5 while the other averages 77.1 and takes most of the impressions: a canonicalisation fix, not a content one.

**Look it up · `inspect_url`**

**Asked:** “Is the k-o.pro homepage indexed, and when was it last crawled?”  
`inspect_url` on the hosted instance, 13 October 2026

```json
{
  "_meta": {
    "source": "Google Search Console API (live data)",
    "tool": "inspect_url",
    "parameters": {
      "url": "https://k-o.pro/",
      "site_url": "sc-domain:k-o.pro"
    },
    "note": "All numbers in this response come directly from the Google Search Console API. They are exact values, not estimates. Base your analysis only on this data. Do not invent or assume additional context."
  },
  "data": {
    "url": "https://k-o.pro/",
    "indexed": true,
    "indexingState": "Submitted and indexed",
    "lastCrawlTime": "2026-10-02T21:35:12Z",
    "crawlAllowed": true,
    "indexingAllowed": true,
    "pageFetchState": "SUCCESSFUL",
    "googleCanonical": "https://k-o.pro/",
    "userCanonical": "https://k-o.pro/",
    "canonicalMatch": true,
    "mobileUsability": "VERDICT_UNSPECIFIED",
    "issues": [],
    "summary": "This URL is indexed and healthy. Last crawled: 2026-10-02T21:35:12Z."
  }
}
```

Indexed, last crawled on 2 October 2026, and Google picked the same canonical the page declares. When a URL is not indexed, the same fields say which state it is in.

**Image search · `image_page_audit`**

**Asked:** “Audit the images on the k-o.pro homepage.”  
`image_page_audit` on the hosted instance, 13 October 2026

```json
{
  "_meta": {
    "source": "Live fetch of the audited pages (the user's own site)",
    "tool": "image_page_audit",
    "parameters": {
      "urls": [
        "https://k-o.pro/"
      ],
      "fetch_metadata": true,
      "max_images_per_page": 6,
      "max_images_reported": 6
    },
    "note": "All findings come from fetching and parsing the listed pages and image files at call time. Alt text, attributes, bytes, and dimensions are read values, not estimates. Base your analysis only on this data. An empty alt (alt=\"\") is correct for decorative images; do not report it as a defect."
  },
  "data": {
    "audits": [
      {
        "url": "https://k-o.pro/",
        "status": "ok",
        "http_status": 200,
        "page_checks": {
          "total_img_tags": 17,
          "content_images": 0,
          "images_fetched": 0,
          "lcp_candidate_src": null,
          "lcp_candidate_lazy_loaded": null,
          "lcp_candidate_fetchpriority": null,
          "inline_background_images": 0,
          "max_image_preview": "not_set",
          "image_object_schema_count": 0,
          "has_licensable_fields": false,
          "has_primary_image_of_page": false,
          "images_with_srcset": 0,
          "modern_format_sources": false
        },
        "images": [],
        "images_not_reported": 0,
        "issue_counts": {},
        "top_fixes": [
          "Add ImageObject schema (with about/mainEntity) for the page's key images",
          "Add max-image-preview:large to the robots meta for full-size previews"
        ]
      }
    ],
    "overall": {
      "pages_audited": 1,
      "pages_failed": 0,
      "total_issues": 0,
      "note": "empty alt (alt=\"\") is correct for decorative images; it is reported but not counted as an issue."
    }
  }
}
```

Of the 17 img tags, none counted as a content image, so no image files were fetched. The two page-level fixes it returned are about previews and schema rather than the images themselves.

**AI search, and your account · `genai_conversation_queries`**

**Asked:** “Do any of k-o.pro's queries look like AI conversations?”  
`genai_conversation_queries` on the hosted instance, 13 October 2026; empty buckets, the long-tail bucket and the monthly timeline left out

```json
{
  "_meta": {
    "source": "Google Search Console API (live data)",
    "tool": "genai_conversation_queries",
    "parameters": {
      "days": 480,
      "min_impressions": 1,
      "max_rows_per_bucket": 10,
      "include_timeline": true,
      "site_url": "sc-domain:k-o.pro"
    },
    "note": "All numbers in this response come directly from the Google Search Console API. They are exact values, not estimates. Base your analysis only on this data. Do not invent or assume additional context."
  },
  "data": {
    "period": {
      "startDate": "2025-06-20",
      "endDate": "2026-10-12"
    },
    "total_conversation_queries": 4,
    "total_conversation_impressions": 20,
    "buckets": {
      "conversational": {
        "total_matched": 2,
        "rows": [
          {
            "query": "how can i implement bulk tracking across chatgpt, perplexity, and gemini for 15+ accounts?",
            "impressions": 9,
            "clicks": 0,
            "ctr": 0,
            "position": 89.6,
            "top_pages": [
              {
                "page": "https://k-o.pro/posts/track-traffic-from-ai-chatbots-ga4",
                "impressions": 9
              }
            ]
          },
          {
            "query": "is it hard to make a chrome extension",
            "impressions": 1,
            "clicks": 0,
            "ctr": 0,
            "position": 51,
            "top_pages": [
              {
                "page": "https://k-o.pro/posts/how-to-build-a-chrome-extension",
                "impressions": 1
              }
            ]
          }
        ]
      }
    }
  }
}
```

Four queries in 16 months, all low volume: two conversational questions, each landing on the post that answers it. No reply artefacts like "yes" or "go on" on this site, which the timeline confirms month by month.

## Connect it

Add `https://gsc.k-o.pro/mcp` to [claude.ai or Claude Desktop](/claude.md) or to [Claude Code](/claude-code.md), sign in with Google, and ask.

## About this page

Built and run by [Oleksii Khoroshun](https://k-o.pro/about), an SEO with nine years in the field who builds tools at [k-o.pro](https://k-o.pro/). It is a fork of [Suganthan's GSC MCP](https://github.com/Suganthan-Mohanadasan/Suganthans-GSC-MCP) by [Suganthan Mohanadasan](https://suganthan.com): the analysis logic and most of the tool set are his design, and this fork adds multi-property access, the remote server and per-user sign-in.

Version 3.11.0 · page updated 10 November 2026 · [changelog](https://github.com/kodotpro/gsc-mcp-remote#changelog)

## Related

- [Overview](/index.md)
- [Connect to Claude](/claude.md)
- [Use it in Claude Code](/claude-code.md)
- [Find opportunities](/tools/opportunities.md)
- [Diagnose drops](/tools/diagnostics.md)
- [Look things up](/tools/lookups.md)
- [Image search](/tools/image-search.md)
- [AI Mode queries](/ai-mode-queries.md)
- [Self-host it](/self-host.md)
- [How it compares](/compare.md)
- [Questions](/faq.md)

---

Not affiliated with or endorsed by Google or Anthropic. “Google” and “Google Search Console” are trademarks of Google LLC.
