SearchLink Lite
SearchLink Lite is a read-only MCP server that puts Google Search Console data and SEO checks inside Claude, Cursor, and other MCP clients.
List all Search Console sites the credentials can access (
list_sites)Get a site overview with clicks, impressions, CTR, position, biggest gainers/losers, and suggested actions (
site_overview)Run custom search performance reports by query, page, country, device, or date, with filters and period comparison (
search_performance)Find quick wins: high impressions/low CTR queries, #8–20 rankings, and pages losing clicks (
find_opportunities)Check whether a specific URL is indexed, its coverage state, last crawl, and Google's canonical (
inspect_url)Audit one page's title, description, canonical, noindex, headings, thin content, alt text, and structured data (
page_check)View Google's official ranking and spam update history to explain traffic changes (
algorithm_updates)List sitemap status, errors, and URL counts (
sitemaps)
Provides tools for interacting with Google Search Console, enabling queries about site performance, search analytics, indexing status, sitemaps, and opportunities.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SearchLink LiteHow did example.com do on Google in the last 28 days?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SearchLink Lite
Google Search Console inside Claude, Cursor and any MCP client. Runs on your machine, read-only, free (MIT).
Ask things like:
"How did example.com do on Google in the last 28 days?"
"Which pages lost the most clicks?"
"Which queries get impressions but no clicks?"
"Is https://example.com/pricing indexed?"
Tools
Tool | What it answers |
| Which sites are in your Search Console |
| Clicks, impressions, CTR, position vs the previous period, biggest drops and gains, up to 3 things to do now |
| Any breakdown by query, page, country, device or date, with filters and period comparison |
| High impressions but low CTR, queries ranking #8-20, pages losing clicks |
| Is this page indexed, last crawl, Google's canonical |
| Sitemap status, errors and URL counts |
| Title, description, canonical, noindex, headings, thin content, alt text, structured data errors |
| Google's own ranking update history, so you know whether a drop was an update |
Totals come from the date dimension, so they match the Search Console UI. (Summing page rows double-counts impressions.)
Related MCP server: SearchConsole.ai
Setup (about 10 minutes)
You need a Google credentials file that can read Search Console. A service account is the most reliable option.
In Google Cloud Console, pick or create a project and enable the Google Search Console API.
Go to IAM & Admin > Service accounts, create one (no roles needed), then Keys > Add key > JSON. Save the file somewhere safe.
In Search Console, open Settings > Users and permissions > Add user, paste the service account email, and choose Restricted. Repeat for each site.
Add the server to your client (below), pointing
GOOGLE_APPLICATION_CREDENTIALSto the JSON file.
Already use gcloud? This also works instead of steps 1-3:
gcloud auth application-default login --scopes=https://www.googleapis.com/auth/webmasters.readonly,https://www.googleapis.com/auth/cloud-platformClaude Desktop
In claude_desktop_config.json:
{
"mcpServers": {
"searchlink": {
"command": "npx",
"args": ["-y", "searchlink-lite"],
"env": { "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/key.json" }
}
}
}Claude Code
claude mcp add searchlink -e GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json -- npx -y searchlink-liteCursor
In ~/.cursor/mcp.json, use the same block as Claude Desktop.
As a plugin
This repo ships a plugin manifest (.claude-plugin/plugin.json) and an MCP config (.mcp.json), so clients that
install plugins from a repository can pick the server up without a config file of their own. Credentials still come
from GOOGLE_APPLICATION_CREDENTIALS or your gcloud application default credentials.
One file install
If your client supports MCP bundles, download searchlink-lite-0.2.0.mcpb from Releases and open it. It asks for your credentials file and nothing else.
It is also in the official MCP Registry as com.namubase.searchlink/searchlink-lite.
Requires Node.js 18 or newer.
Privacy
Everything runs locally. Your credentials and data go only to Google's APIs. Nothing is sent to us.
Want it without the setup?
SearchLink is the hosted version (see a live report, no sign-in): sign in with Google (no key files), and it adds change tracking with before-and-after measurement, content decay, brand split, history kept past Google 16 months, Copilot citation tracking, page speed, a one-screen dashboard, a Monday email with 3 things to fix, and daily alerts when clicks drop. Works in Claude, ChatGPT and Cursor. Free for up to 3 sites.
list_sites and site_overview end with one line about the hosted version. Set SEARCHLINK_LITE_QUIET=1 in the server's env to turn it off. It is a plain link; nothing is sent anywhere unless you click it.
License
MIT
Available Tools
8 toolsalgorithm_updatesGoogle updatesARead-onlyIdempotent
Google's official ranking and spam update history from the Google Search Status Dashboard, with start and end dates. Use it when traffic changed suddenly, to see whether an update lines up, before blaming the site's own edits. Needs no credentials. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back to list updates, 7 to 365. Default 90. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and destructiveHint=false. The description adds that no credentials are needed, which is a useful behavioral detail. However, it repeats read-only and does not disclose other behaviors like response format or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with the core purpose, followed by a clear use case and a short note on credentials/safety. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read-only tool with no output schema, the description covers the data source, temporal coverage, intended use case, and auth requirement. It could mention the exact output fields, but the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's description for 'days' fully explains the range and default. The tool description adds no additional meaning about that parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as Google's official ranking and spam update history from the Search Status Dashboard, including start and end dates. This distinguishes it from sibling tools like search_performance and site_overview, which focus on site-level metrics and diagnostics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool: when traffic changed suddenly, to see whether an update lines up before blaming site edits. While it doesn't name a specific alternative, the context makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_opportunitiesFind opportunitiesARead-onlyIdempotent
Finds the quickest wins: queries seen often but rarely clicked (rewrite the title or description), queries ranking #8 to #20 (one push from page one), and pages losing clicks. Use when the user asks what to improve or where to start. Returns each item with its numbers and the suggested fix. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Length of the period in days, 7 to 480, ending about 3 days ago because Google data lags. It is compared with the same number of days right before it. Default 28. | |
| site | Yes | The Search Console property to read. Accepts "example.com", "https://example.com/" or "sc-domain:example.com". Call list_sites first if unsure which properties exist. | |
| limit | No | Maximum items per kind of opportunity, 1 to 50. Default 15. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds behavioral depth by explaining the selection logic and return contents (numbers and suggested fixes), going beyond the annotation-only picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: it front-loads the outcome, then gives the trigger condition, return shape, and safety hint. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the fully documented schema, rich non-destructive annotations, and a clear return-shape statement, nothing an agent needs to invoke this tool correctly is missing. The absence of an output schema is compensated by the explicit mention of returned numbers and suggested fixes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (days, site, limit) fully documented in the input schema. The description itself adds no parameter-specific semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Finds') and resource ('opportunities'), then enumerates three concrete opportunity categories. This makes its purpose unambiguous and clearly distinguishes it from siblings like search_performance or site_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'Use when the user asks what to improve or where to start.' This is clear and actionable, though it does not name specific alternatives or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_urlCheck if a page is indexedARead-onlyIdempotent
Asks Google's URL Inspection API about one page: whether it is indexed, the coverage state, last crawl time, the canonical Google chose versus the one you declared, and robots or fetch problems. Use for "is this page on Google?" questions. For on-page problems use page_check. Read-only; Google allows about 2,000 inspections a day per property.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL of the page to inspect, including https://. It must belong to the site given. | |
| site | Yes | The Search Console property to read. Accepts "example.com", "https://example.com/" or "sc-domain:example.com". Call list_sites first if unsure which properties exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description adds meaningful behavioral context: it is read-only and has a daily rate limit of about 2,000 inspections per property. It also discloses what kind of results the agent can expect, such as indexed status and canonical choices, which is valuable given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences that front-load the tool's core purpose, then quickly add use case, alternatives, safety, and rate-limit context. Every sentence earns its place with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only inspection tool, the description is complete: parameters are fully documented in the schema, annotations cover safety and idempotency, and the description enumerates the expected return information despite the lack of an output schema. The rate limit is an important operational detail that is included. Nothing essential is missing for an agent to select and call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for both parameters at 100% coverage, so the schema carries the parameter documentation burden. The tool description does not add new semantic detail about the parameters beyond what the schema states, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it asks Google's URL Inspection API about one page. It lists the exact information returned (indexed status, coverage state, last crawl, canonical choices, robots/fetch problems) and clearly differentiates this from the sibling page_check tool. An agent can immediately tell what this tool does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool for "is this page on Google?" questions and names page_check as the alternative for on-page problems. This gives clear when-to-use and when-not-to-use guidance, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesList my sitesARead-onlyIdempotent
Lists every Search Console property the credentials can read, with the access level of each. Call this first when the user has not named a site, or when another tool says a site was not found. Read-only. Returns a table of property URLs and permissions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive. The description adds useful context about output ('Returns a table of property URLs and permissions') and the scope ('credentials can read'). It reinforces safety with 'Read-only' without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The main action is front-loaded, followed by when-to-use and output format. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool with rich annotations, the description is complete: it explains the output table and access levels, gives clear call contexts, and relies on annotations for safety. No missing information needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the baseline is 4. The description correctly implies no inputs are needed and focuses on output. Nothing about parameters needs to be added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Lists every Search Console property the credentials can read, with the access level of each.' It clearly distinguishes this list/discovery tool from the site-specific siblings by focusing on enumeration of accessible properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Call this first when the user has not named a site, or when another tool says a site was not found.' It does not name alternative tools, so it lacks the 'when not to use' or alternative-route clarity of a 5, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_checkCheck one pageARead-onlyIdempotent
Fetches one public page the way a search engine does and checks the title, meta description, canonical, noindex and robots.txt, H1 headings, word count, image alt text and structured data. Returns what it found and a list of problems in order of importance. Works without any Google credentials. Read-only: it only downloads the page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL of any public page to check, including https://. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly says 'Read-only: it only downloads the page', reinforcing and extending the readOnlyHint/idempotentHint annotations. It also discloses the output behavior ('returns what it found and a list of problems in order of importance') and the absence of credential requirements, which annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences cover purpose, output, auth, and read-only behavior with no filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with no output schema, the description is complete: it lists inputs, outputs, access requirements, and side-effect behavior. There is no missing information an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the URL parameter is already fully documented in the schema. The description confirms the URL should be a public page but adds no new parameter-level detail beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('fetches one public page'), a concrete scope ('one public page the way a search engine does'), and enumerates the exact checks performed (title, meta description, canonical, noindex, robots.txt, H1s, word count, alt text, structured data). This scope clearly separates it from site-level siblings like site_overview and list_sites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is implicit: use this when you need a per-page SEO/crawlability audit. It also gives a useful prerequisite ('public page', 'without any Google credentials'), but it never explicitly states when to prefer a sibling or when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_performanceSearch performance (custom)ARead-onlyIdempotent
Custom Search Console report when site_overview is not specific enough: group by query, page, country, device or date (up to two at once), filter by query or page text, sort, and optionally add the change against the previous period. Returns a table with clicks, impressions, CTR and position per row. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Length of the period in days, 7 to 480, ending about 3 days ago because Google data lags. It is compared with the same number of days right before it. Default 28. | |
| site | Yes | The Search Console property to read. Accepts "example.com", "https://example.com/" or "sc-domain:example.com". Call list_sites first if unsure which properties exist. | |
| limit | No | Maximum rows to return, 1 to 200. Default 25. | |
| sort_by | No | Which number to sort rows by, highest first (position: best first). Default clicks. | clicks |
| group_by | No | One or two dimensions to break the numbers down by, e.g. ["query"] or ["page", "query"]. Default ["query"]. | |
| filter_page | No | Keep only pages whose URL contains this text, e.g. "/blog/". | |
| filter_query | No | Keep only search queries that contain this text (case-insensitive), e.g. a brand or product name. | |
| compare_previous | No | Add each row's change against the previous period of the same length. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds the read-only statement and describes the output table shape (clicks, impressions, CTR, position), plus the grouping/filtering/sorting capabilities. It does not contradict annotations and adds useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the purpose and distinguishing condition, then the capabilities and output. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that all 8 parameters are fully documented in the schema and the annotations already cover safety and idempotency, the description provides sufficient top-level context: what the report does, when to use it, and what it returns. Nothing needed for correct selection and invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already has detailed descriptions. The tool description summarizes the parameter capabilities (group_by, filter_query/page, sort_by, compare_previous) but does not add new semantic information beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (Search Console property) and a clear set of actions: grouping, filtering, sorting, and comparing. It explicitly differentiates from the sibling tool site_overview with 'when site_overview is not specific enough', making its purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative tool (site_overview) and the condition under which search_performance should be used instead. This gives an agent a clear decision rule for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sitemapsSitemap statusARead-onlyIdempotent
Lists the sitemaps submitted for the site in Search Console, with when Google last read each one, errors, warnings and how many URLs it contains. Use for indexing questions about many pages at once. Read-only; it does not submit or change sitemaps.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property to read. Accepts "example.com", "https://example.com/" or "sc-domain:example.com". Call list_sites first if unsure which properties exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, and destructiveHint=false, and the description reinforces this with 'Read-only; it does not submit or change sitemaps'. It also discloses what data the call returns, which matters because no output schema is present. It does not discuss auth or rate limits, but for a safe list operation the annotations carry the key safety burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the main action and output components front-loaded, followed by use case and safety note. There is no filler or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only list operation, the description is complete: it names the resource, the values returned, when to use it, and the fact that it does not mutate sitemaps. The schema covers the only input, and the annotation profile covers safety, so nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter is fully documented in the input schema, including accepted formats and a helpful pointer to list_sites for verification. The description adds no parameter-specific detail, but with 100% schema coverage the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Lists the sitemaps submitted for the site in Search Console', and enumerates the returned status fields (last-read time, errors, warnings, URL count). The line 'Use for indexing questions about many pages at once' further distinguishes it from single-page or site-overview sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly gives a usage context: indexing questions about many pages at once, which helps an agent decide between this and page-level tools like inspect_url or page_check. It does not name specific alternatives or state 'when not to use', so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
site_overviewSite overviewARead-onlyIdempotent
The first tool to call for any question about how a site is doing on Google. Returns total clicks, impressions, CTR and average position for the period against the period before (totals match the Search Console UI), the pages that gained and lost the most clicks, and up to 3 plain-language things to do now. For custom breakdowns use search_performance instead. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Length of the period in days, 7 to 480, ending about 3 days ago because Google data lags. It is compared with the same number of days right before it. Default 28. | |
| site | Yes | The Search Console property to read. Accepts "example.com", "https://example.com/" or "sc-domain:example.com". Call list_sites first if unsure which properties exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond the annotations: the period comparison against the prior period, the fact that totals match the Search Console UI, and the data-lag note in the days parameter. It doesn't describe pagination or exact response shape, but for a read-only overview tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. The most important guidance ('first tool to call') is front-loaded, followed by concrete output details and a clear pointer to the alternative. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only overview tool with two well-documented parameters, no output schema, and strong annotations, the description covers the essential context: what it returns, how the period comparison works, when to use it, and when to use the sibling instead. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters well. The description adds value by explaining the comparison semantics ('against the period before') and the data-lag context ('ending about 3 days ago because Google data lags'), which go beyond the schema's parameter descriptions. It doesn't add much about the site parameter, but the schema already covers accepted formats and the list_sites hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('call first'), a clear resource ('how a site is doing on Google'), and enumerates the exact outputs (totals, deltas, top pages, plain-language actions). It also distinguishes itself from the sibling search_performance, so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'The first tool to call for any question about how a site is doing on Google' and names the alternative for custom breakdowns ('use search_performance instead'). This gives both a positive trigger and an exclusion condition, which is exactly the when-to-use guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.2.0- Added
algorithm_updates - Changed
find_opportunities3 fields changed- changed
Input schema / properties / days / descriptionPrevious value: -"Length of the period in days (compared with the period right before it)."New value: +"Length of the period in days, 7 to 480, ending about 3 days ago because Google data lags. It is compared with the same number of days right before it. Default 28." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum items per kind of opportunity, 1 to 50. Default 15." - changed
Input schema / properties / site / descriptionPrevious value: -"Your site, e.g. \"example.com\". Use list_sites to see options."New value: +"The Search Console property to read. Accepts \"example.com\", \"https://example.com/\" or \"sc-domain:example.com\". Call list_sites first if unsure which properties exist."
- Changed
inspect_url2 fields changed- changed
Input schema / properties / site / descriptionPrevious value: -"Your site, e.g. \"example.com\". Use list_sites to see options."New value: +"The Search Console property to read. Accepts \"example.com\", \"https://example.com/\" or \"sc-domain:example.com\". Call list_sites first if unsure which properties exist." - changed
Input schema / properties / url / descriptionPrevious value: -"Full page URL"New value: +"Full URL of the page to inspect, including https://. It must belong to the site given."
- Added
page_check - Changed
search_performance8 fields changed- added
Input schema / properties / compare_previous / descriptionAdded value: +"Add each row's change against the previous period of the same length. Default false." - changed
Input schema / properties / days / descriptionPrevious value: -"Length of the period in days (compared with the period right before it)."New value: +"Length of the period in days, 7 to 480, ending about 3 days ago because Google data lags. It is compared with the same number of days right before it. Default 28." - changed
Input schema / properties / filter_page / descriptionPrevious value: -"Only pages whose URL contains this text."New value: +"Keep only pages whose URL contains this text, e.g. \"/blog/\"." - changed
Input schema / properties / filter_query / descriptionPrevious value: -"Only queries containing this text."New value: +"Keep only search queries that contain this text (case-insensitive), e.g. a brand or product name." - added
Input schema / properties / group_by / descriptionAdded value: +"One or two dimensions to break the numbers down by, e.g. [\"query\"] or [\"page\", \"query\"]. Default [\"query\"]." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum rows to return, 1 to 200. Default 25." - changed
Input schema / properties / site / descriptionPrevious value: -"Your site, e.g. \"example.com\". Use list_sites to see options."New value: +"The Search Console property to read. Accepts \"example.com\", \"https://example.com/\" or \"sc-domain:example.com\". Call list_sites first if unsure which properties exist." - added
Input schema / properties / sort_by / descriptionAdded value: +"Which number to sort rows by, highest first (position: best first). Default clicks."
- Changed
site_overview2 fields changed- changed
Input schema / properties / days / descriptionPrevious value: -"Length of the period in days (compared with the period right before it)."New value: +"Length of the period in days, 7 to 480, ending about 3 days ago because Google data lags. It is compared with the same number of days right before it. Default 28." - changed
Input schema / properties / site / descriptionPrevious value: -"Your site, e.g. \"example.com\". Use list_sites to see options."New value: +"The Search Console property to read. Accepts \"example.com\", \"https://example.com/\" or \"sc-domain:example.com\". Call list_sites first if unsure which properties exist."
- Changed
sitemaps1 field changed- changed
Input schema / properties / site / descriptionPrevious value: -"Your site, e.g. \"example.com\". Use list_sites to see options."New value: +"The Search Console property to read. Accepts \"example.com\", \"https://example.com/\" or \"sc-domain:example.com\". Call list_sites first if unsure which properties exist."
6 tool updates
v0.1.0- First observed
find_opportunities - First observed
inspect_url - First observed
list_sites - First observed
search_performance - First observed
site_overview - First observed
sitemaps
TDQS
Scored across 8 tools
Each tool targets a distinct read-only Search Console or SEO concern, and the descriptions include explicit guidance on when to use one instead of another. Even similar pairs like inspect_url vs. page_check and site_overview vs. search_performance are clearly separated by purpose and use cases.
All tool names use lowercase snake_case and are short and readable, but they do not follow a single strict verb_noun pattern: list_sites and inspect_url are verb-first, while site_overview and sitemaps are noun-first. This is a minor deviation rather than a chaotic mix.
Eight tools is well within the ideal range for a focused read-only Search Console server. Each tool covers a distinct workflow without redundancy or scope creep, and none of them feel like filler.
The tool surface covers the main read-only SEO workflows: property discovery, performance reporting, opportunity identification, URL inspection, on-page checks, algorithm context, and sitemap health. A whole-site index coverage report is missing, but agents can approximate it using sitemaps and inspect_url, so the gap is not severe.
Maintenance
Related MCP Connectors
Read-only Search Console analytics, URL inspection, indexing diagnostics, and sitemaps.
Read Search Console performance, keyword opportunities and annotations for your sites.
Ask Google Search Console in plain language. Hosted, free, no Google Cloud project.
Hosted MCP server for GA4, Google Ads and Search Console. Google OAuth, nothing to install.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server that gives AI clients access to Google Search Console data, enabling natural language queries about traffic, rankings, and SEO opportunities.143 npmMIT
- AlicenseNot gradedqualityBmaintenanceRead-only MCP server for Google Search Console data, enabling search analytics, URL inspection, indexing diagnostics, and sitemap management through MCP clients.26 npmMIT
- AlicenseBqualityBmaintenanceEnables Google Search Console data queries via MCP, including search analytics, performance comparisons, URL inspection, and sitemap management.121MIT
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to Google Search Console data, including search analytics, sitemap status, and URL inspection, for MCP clients like Claude.3 npmMIT