google-seo-mcp
Provides tools for managing Search Console properties, sitemaps, search analytics (clicks, impressions, CTR, position), and URL inspection including index status, mobile usability, and rich results.
Enables running PageSpeed Insights analysis to obtain Core Web Vitals metrics and Lighthouse performance reports for any URL, without requiring OAuth.
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., "@google-seo-mcpInspect URL https://example.com/page"
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.
๐ google-seo-mcp
Full Google SEO & analytics stack for AI agents โ over one MCP server.
Search Console ยท Indexing API ยท GA4 (Admin + Data) ยท Tag Manager ยท PageSpeed Insights
A Model Context Protocol server that gives Claude (and any MCP client) hands-on control of the Google SEO and analytics stack โ list and claim properties, query search performance, submit URLs for indexing, spin up GA4 properties and data streams (i.e. install the measurement tag), wire up Tag Manager, and run PageSpeed audits. Ships with self-configuring OAuth2: no tokens at launch โ the agent walks through authorization with built-in tools.
โจ Highlights
๐ Search Console โ properties, sitemaps, search analytics, URL inspection
โก Indexing API โ push
URL_UPDATED/URL_DELETEDnotifications๐ GA4 โ create properties & web data streams (get the Measurement ID), run reports & realtime
๐ท๏ธ Tag Manager โ accounts, containers, workspaces, tags
๐ฆ PageSpeed Insights โ Core Web Vitals + Lighthouse, no OAuth needed
๐ Self-configuring OAuth2 โ loopback code capture + auto-refresh, stored locally
๐ก๏ธ Safety rails โ read-only mode and per-call confirm guards
Related MCP server: Google Search Console MCP Server
๐ฆ Installation
Run straight from npm with npx (no install needed), or build from source:
# from source
git clone https://github.com/skiddgoddamn/google-seo-mcp
cd google-seo-mcp
npm install && npm run build๐ Connect to your MCP client
Add to your MCP config (e.g. ~/.claude.json or claude_desktop_config.json):
{
"mcpServers": {
"google-seo": {
"command": "npx",
"args": ["-y", "google-seo-mcp"],
"env": { "GOOGLE_PSI_API_KEY": "" }
}
}
}{
"mcpServers": {
"google-seo": {
"command": "node",
"args": ["F:/projects/google-seo-mcp/build/index.js"]
}
}
}โ๏ธ Google Cloud setup
Create an OAuth 2.0 Client ID โ application type Desktop app
Enable these APIs for the project:
Google Search Console API ยท Indexing API ยท Analytics Admin API ยท Analytics Data API ยท Tag Manager API
On the OAuth consent screen, add your Google account as a test user (while the app is in "Testing")
Keep the Client ID and Client Secret handy
๐ Authorize (self-setup)
No tokens needed at startup โ run these tools from your agent, in order:
Step | Tool | What happens |
1 |
| Save your OAuth Client ID + Client Secret |
2 |
| Opens Google's consent screen and captures the code via a local loopback server |
โณ |
| Headless fallback โ paste the code + redirect URI manually |
โ |
| Check what's configured and whether the token is valid |
The refresh token is saved to ~/.google-seo-mcp/config.json and reused (and auto-refreshed) on every run.
โ๏ธ Environment variables
Variable | Default | Description |
|
| Block every mutating tool ( |
|
| Require a |
|
|
|
|
| Log request/response bodies to stderr (verbose) |
| โ | Append log lines to a file (default: stderr only) |
|
| Override the config directory |
| โ | PageSpeed Insights key; anonymous (rate-limited) if unset |
See .env.example for a ready-to-copy template.
๐งฐ Tool reference
๐ Auth โ g_
Tool | Description |
| Show OAuth configuration status and token validity |
| Save OAuth |
| Open the consent screen via loopback and store the refresh token |
| Manually exchange an authorization code for a refresh token |
๐ Search Console โ gsc_
Tool | Description |
| List all Search Console properties |
| Get a single property and your permission level |
| Add (claim) a property |
| Remove a property |
| List submitted sitemaps |
| Get a sitemap's status |
| Submit a sitemap |
| Delete a sitemap |
| Clicks / impressions / CTR / position by query, page, country, device, date |
| Index status, coverage, mobile usability, rich results |
โก Indexing API โ idx_
Tool | Description |
| Notify Google a URL was added/updated ( |
| Notify Google a URL was removed ( |
| Latest indexing-notification metadata for a URL |
โน๏ธ The Indexing API is officially eligible only for pages with
JobPostingorBroadcastEventstructured data. Other URLs may be ignored.
๐ GA4 โ ga4_
Tool | Description |
| List Analytics accounts |
| List properties under an account |
| Get a property |
| Create a GA4 property |
| List a property's data streams |
| Create a web data stream โ returns the Measurement ID |
| Get a data stream |
| Run a report (metrics + dimensions over a date range) |
| Run a realtime report |
๐ท๏ธ Tag Manager โ gtm_
Tool | Description |
| List GTM accounts |
| List containers under an account |
| Create a container โ returns its GTM-ID |
| List workspaces of a container |
| List tags in a workspace |
| Create a tag in a workspace |
๐ฆ PageSpeed Insights โ psi_
Tool | Description |
| Analyze a URL โ Core Web Vitals + Lighthouse (no OAuth required) |
๐ก๏ธ Safety rails
G_READONLY=trueโ blocks every tool whose name contains_add_create_update_delete_submit_set. Reads still work.G_CONFIRM=trueโ mutating tools return a preview and require a follow-up call withconfirm: true.
๐ License
MIT ยฉ skiddgoddamn
Available Tools
17 toolsga4_datastream_createA
GA4 Admin: create a WEB data stream (returns the Measurement ID / tag โ i.e. installs the GA4 counter).
| Name | Required | Description | Default |
|---|---|---|---|
| default_uri | Yes | Site URL, e.g. https://example.com | |
| property_id | Yes | ||
| display_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses the return value (Measurement ID/tag) which is useful. However, it does not mention whether the operation is idempotent, destructive, or if it requires specific permissions. Missing some behavioral details expected for a create operation.
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?
Single sentence that efficiently communicates purpose and key output. No unnecessary words, front-loaded with the action, and structured well.
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 3-param create tool with no output schema and no annotations, the description covers core purpose and result. Missing prerequisites (e.g., property must exist), error conditions, and whether duplicate creation is allowed. Adequate but has gaps.
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 low (33%), only default_uri has a description. The tool description does not provide additional details about property_id or display_name beyond their names. The parameter meanings are partially inferred but not explicitly clarified. More explanation would help.
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?
Clearly states 'create a WEB data stream' and specifies the result (returns Measurement ID/tag). The verb 'create' and resource 'WEB data stream' are distinct from sibling tools that get or list streams.
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?
Explicitly says 'create a WEB data stream', implying it is the tool for GA4 web data stream creation. Does not explicitly state when not to use or provide alternatives, but the context of sibling names makes differentiation clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_datastreams_getB
GA4 Admin: list data streams of a property.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description must fully convey behavior. The word 'list' implies a read-only operation, which is transparent enough for a simple list. However, it doesn't disclose pagination, authentication requirements, or the nature of the returned data, leaving some gaps.
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?
One sentence, seven words, no fluff. Essential information is front-loaded. Ideal conciseness for a simple list tool.
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 absence of output schema and annotations, the description is minimal but functional. It doesn't describe the return format (e.g., array of stream objects), pagination, or any edge cases. Adequate for a straightforward list, but would benefit from slight expansion.
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 parameter 'property_id' has no schema description (0% coverage). The description adds value by stating 'of a property', clarifying that property_id identifies the property whose data streams are listed. This compensates for the missing schema description.
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?
Description clearly states the tool lists data streams of a property, using a specific verb and resource. It differentiates from siblings like ga4_datastream_get (singular) and ga4_datastream_create, but could be more explicit about the 'list' vs 'get' distinction.
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?
No guidance on when to use this tool versus alternatives (e.g., ga4_datastream_get for a single stream, or ga4_datastream_create for creation). The description provides no context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_property_createB
GA4 Admin: create a new GA4 property under an account.
| Name | Required | Description | Default |
|---|---|---|---|
| time_zone | Yes | IANA tz, e.g. Europe/Moscow | |
| account_id | Yes | Numeric account ID or 'accounts/123' | |
| display_name | Yes | ||
| currency_code | No | e.g. RUB, USD (default USD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies mutation ('create') but does not disclose permissions, rate limits, side effects, or error states. Minimal behavioral disclosure.
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 a single sentence with no wasted words. While concise, it could be slightly expanded to improve completeness without losing efficiency.
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 4 parameters, no output schema, and no annotations, the description is too minimal. It does not explain what the tool returns, prerequisites, or error handling, leaving gaps for an agent.
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 75% (three of four parameters have descriptions). The tool description adds no extra meaning beyond the schema; it merely restates the action. 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 clearly states the verb 'create', the resource 'GA4 property', and the context 'under an account'. It distinguishes the tool from sibling tools like ga4_properties_get (list) and ga4_property_get (get single).
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 provides no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions. It is a bare statement with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_site_addC
Search Console: add (claim) a property.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | Property URL exactly as in Search Console, e.g. https://example.com/ or sc-domain:example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No behavioral traits beyond the brief action described; missing side effects, auth needs, or success/failure conditions. No annotations to compensate.
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?
Extremely concise but under-sized; lacks essential information that could be added without being verbose.
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 no output schema or annotations, the description is too brief to fully inform an agent about results, errors, or implications of claiming a property.
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 already provides detailed parameter description (100% coverage). The description adds no additional context beyond the action.
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 states the action 'add (claim)' and resource 'property', distinguishing it from sibling tools like gsc_site_delete and gsc_site_get.
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?
No guidance on when to use this tool vs alternatives like gsc_sites_get or gsc_site_get, nor prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_site_deleteB
Search Console: remove a property from the account.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | Property URL exactly as in Search Console, e.g. https://example.com/ or sc-domain:example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states 'remove a property'. It does not disclose consequences (e.g., irreversibility, permission requirements, impact on associated data), leaving the agent underinformed about the tool's behavioral traits.
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 a single concise sentence, front-loaded with 'Search Console' for context. It is efficient but could include a bit more detail without becoming verbose.
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 absence of annotations and output schema, the description is too minimal for a delete operation. It lacks information on what happens upon removal, error scenarios, or success confirmation, leaving the agent with incomplete context.
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% for the single parameter. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate. It does not clarify formatting or validation beyond what the schema 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 clearly states the verb 'remove' and the resource 'property' from the account, distinguishing it from sibling tools like gsc_site_add (add) and gsc_site_get (get). It is specific and unambiguous.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., gsc_sitemap_delete, gsc_site_get). There is no mention of prerequisites, conditions, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_site_getA
Search Console: get one property and the user's permission level.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | Property URL exactly as in Search Console, e.g. https://example.com/ or sc-domain:example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly states a read operation ('get'), which is safe and idempotent, but does not disclose error behavior, rate limits, or idempotency beyond the verb. For a simple GET tool, this is adequate but minimal.
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?
A single sentence that front-loads the purpose ('Search Console: get one property and the user's permission level'). Every word earns its place; no wasted 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?
The description covers the basic purpose but omits details about response structure (no output schema) and error handling. For a one-parameter GET tool, it is adequately complete but could be more informative, e.g., mentioning that the response includes the site object and permission level.
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 the description repeats the schema's parameter description verbatim ('Property URL exactly as in Search Console, e.g. https://example.com/ or sc-domain:example.com'). No additional semantic enrichment is provided.
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 a specific verb ('get') and resource ('one property and the user's permission level'), distinguishing it from sibling tools like gsc_site_add (create) and gsc_sites_get (list).
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 implies usage for retrieving a single site's details and permissions, but does not explicitly state when to use this versus gsc_sites_get or other tools. No exclusions or alternative guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_sitemaps_getB
Search Console: list submitted sitemaps for a property.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | Property URL exactly as in Search Console, e.g. https://example.com/ or sc-domain:example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It indicates a read operation but doesn't disclose any limitations or side effects. Adequate but not detailed.
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?
Single sentence with zero wasted words; front-loaded with purpose. Highly efficient.
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?
No output schema and description lacks any hint of return format (e.g., list of objects, fields). For a listing tool, this is incomplete.
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% for the single parameter, so description adds no extra value beyond schema. Baseline 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?
Description clearly states action 'list' and resource 'submitted sitemaps for a property', effectively distinguishing from siblings like gsc_sitemap_get and gsc_sitemap_submit.
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?
No guidance on when to use this tool vs alternatives (e.g., gsc_sitemap_get for single sitemap). No context on prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_sites_getA
Search Console: list all properties for the user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. Only states it lists properties; no disclosure of behavior like authentication needs, rate limits, or return format.
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?
Single concise sentence with no redundancy. Front-loads 'Search Console:' for context.
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 0-param list tool, description is minimally adequate but lacks details about output content (e.g., what a 'property' includes) as no output schema exists.
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?
Tool has zero parameters and 100% schema coverage, so baseline 4 applies. Description adds no param info but none is needed.
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?
Description clearly states verb 'list' and resource 'properties' for Search Console. It distinguishes from sibling tools like 'gsc_site_get' which targets a single property.
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?
No explicit guidance on when to use this vs siblings like 'gsc_site_get' or 'gsc_search_analytics'. Usage context is only implied by the verb 'list'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
g_set_codeA
Manual fallback: paste an authorization code obtained by opening the authorize_url with a known redirect_uri (for headless machines).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| redirect_uri | Yes | The exact redirect_uri used to get the code, e.g. http://127.0.0.1:5000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It indicates it's a mutation action (setting code) but doesn't detail side effects, error conditions, or state changes beyond the intended use.
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?
A single, efficient sentence that is front-loaded with the key phrase 'Manual fallback'. Every word contributes value.
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 two-parameter tool with no output schema, the description covers the purpose, when to use it, and parameter roles. It is reasonably complete, though it could mention what happens on success or error.
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 50% (redirect_uri has a description, code does not). The description explains that 'code' is the authorization code from authorize_url and 'redirect_uri' must match the one used to get the code, adding meaningful context beyond the schema.
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 states the tool's purpose as a manual fallback to paste an authorization code. It specifies the verb 'paste' and the resource 'authorization code', and distinguishes it from sibling tools like g_authorize and g_auth_status by indicating it's for headless machines.
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 says 'Manual fallback' and specifies the use case: for headless machines where interactive authorization is not possible. It implies not to use this tool if interactive flow is available, though it doesn't name the alternative tool directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
g_set_credentialsB
Save the Google OAuth app client_id and client_secret. Create a 'Desktop app' OAuth client at https://console.cloud.google.com/apis/credentials and enable the Search Console, Indexing, Analytics Admin/Data, Tag Manager APIs.
| Name | Required | Description | Default |
|---|---|---|---|
| client_id | Yes | ||
| client_secret | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'save' without disclosing side effects, validation, overwrite behavior, or storage details. This is insufficient for a mutation tool with no 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: first defines purpose, second provides setup instructions. No extraneous content, though the second sentence could be considered user guidance rather than tool behavior.
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?
No output schema, and the description does not specify return values or confirm successful saving. It fails to explain what happens after credentials are saved, which is needed for a complete understanding.
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 0%, so description must compensate. It names 'Google OAuth app client_id and client_secret' which adds minimal meaning. It does not explain format, constraints, or validation rules for the parameters.
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 explicitly states 'Save the Google OAuth app client_id and client_secret' which clearly identifies the action and resource. It also provides contextual steps for obtaining the credentials, distinguishing it from sibling tools like g_authorize.
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 implies this tool is a prerequisite for authorization but does not explicitly state when to use it vs. alternatives. It lacks guidance on when not to use it or clear context on the authorization flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_accounts_getB
Tag Manager: list GTM accounts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'list GTM accounts'. It does not disclose behavioral traits such as authentication requirements, rate limits, or the nature of the response. The description carries the full burden but adds minimal insight beyond the name.
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 a single, concise phrase with no wasted words. However, it is very minimal and could be considered under-specified, though it is not verbose.
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 it is a listing operation with no parameters and no output schema, the description is bare minimum. It does not mention that this is a read-only operation or what the response format is. For a simple tool, it is adequate but could provide more context.
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?
There are no parameters (0 params, 100% schema coverage), so the description need not add parameter details. Baseline for 0 params is 4, and the description is adequate.
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 states the verb 'list' and the resource 'GTM accounts', distinguishing it from sibling tools like gtm_containers_get and ga4_accounts_get.
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?
No guidance on when to use this tool vs alternatives. It implies listing all GTM accounts but offers no exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_container_createC
Tag Manager: create a container (returns its GTM-ID).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| account_id | Yes | ||
| usage_context | No | Default ['web'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only mentions that it returns a GTM-ID. It does not disclose whether creation is idempotent, what happens on duplicate names, any side effects, or permission requirements.
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 a single concise sentence that front-loads the purpose. No extraneous words, but it could benefit from slightly more detail without losing conciseness.
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 it is a creation tool with no output schema and no annotations, the description is incomplete. It does not explain error conditions, the format of the returned GTM-ID, rate limits, or how to use the result.
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 only 33% (only usage_context has a description). The tool description does not add any additional meaning for the parameters account_id, name, or usage_context beyond the schema, leaving their semantics unclear.
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 states the verb 'create' and the resource 'container' and specifies that it returns the GTM-ID, which distinguishes it from sibling tools like gtm_containers_get (which lists).
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?
No guidance on when to use this tool vs alternatives, prerequisites (e.g., need an account_id), or when not to use it. The description simply states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_containers_getC
Tag Manager: list containers under an account.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description fails to explicitly state that the tool is read-only or disclose any behavioral traits such as pagination or authentication requirements.
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 a single concise sentence with no wasted words, though it lacks structured sections like examples or prerequisites.
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 tool's simplicity (1 required parameter, no output schema), the description is insufficient. It does not explain the return value or confirm the parameter is required, leaving gaps for an AI agent to infer.
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 0%, and the description only hints at the 'account_id' parameter by mentioning 'under an account', but does not specify its format, constraints, or that it is required.
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 states the verb 'list' and resource 'containers under an account', distinguishing it from sibling tools like 'gtm_container_create'.
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?
No guidance on when to use this tool versus alternatives like 'gtm_tags_get' or 'gtm_workspaces_get' is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_tag_createC
Tag Manager: create a tag in a workspace. Pass the raw GTM tag object (type + parameters).
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | GTM Tag resource, e.g. {"name":"GA4 Config","type":"googtag","parameter":[{"type":"template","key":"tagId","value":"G-XXXX"}]} | |
| account_id | Yes | ||
| container_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states mutation ('create') and hints at object format, but no disclosure of side effects, permissions, idempotency, or error behavior.
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 clear sentences, front-loaded with purpose and format. Every sentence adds value; 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 creation tool with nested object parameter, no output schema, and no annotations, the description is too sparse. Missing return value, error handling, and prerequisites.
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 has only 25% coverage (tag parameter described). Description adds value by emphasizing 'raw GTM tag object (type + parameters)', but fails to explain the other three mandatory parameters (account_id, container_id, workspace_id).
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?
Description clearly states verb and resource: 'create a tag in a workspace'. Distinguishes from sibling tools like gtm_tags_get (read) and gtm_container_create (different resource), but could be more explicit.
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?
No guidance on when to use this tool vs alternatives, nor when not to use it. No mention of prerequisites or context like needing a workspace first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_tags_getC
Tag Manager: list tags in a workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ||
| container_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. The description only says 'list tags', which is a read operation, but doesn't disclose any side effects, authentication needs, or response behavior.
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 a single sentence, which is concise, but it omits important details that could be added without making it verbose.
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 no output schema, no parameter descriptions, and no annotations, the description is insufficient. It does not explain the response format or the structure of tags, leaving the agent with incomplete context.
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 schema has 0% description coverage, and the description does not explain any of the three required parameters (account_id, container_id, workspace_id). It adds no meaning beyond the schema.
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 states the verb 'list' and the resource 'tags' in the context of 'Tag Manager' and 'workspace'. It distinguishes from siblings like gtm_tag_create and gtm_workspaces_get, which have different actions.
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 implies when to use (to list tags) but provides no guidance on prerequisites, alternatives, or when not to use. For a simple list operation, it's adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gtm_workspaces_getC
Tag Manager: list workspaces of a container.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ||
| container_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only operation ('list'), but no annotations are present to confirm safety. No behavioral details (e.g., permissions needed, rate limits, or side effects) are provided beyond the basic operation.
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 very brief (one sentence), which is concise, but lacks critical information such as parameter details. It is front-loaded but does not fully earn its place because it omits necessary context.
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?
Despite the tool's simplicity, the description fails to explain the return value (e.g., a list of workspace objects) or any pagination behavior. With no output schema or annotations, the description is insufficient for an agent to use 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 has two required parameters (account_id, container_id) with no description coverage (0%). The tool description does not explain their purpose or format, leaving the agent to guess their meaning.
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 states the action ('list') and the resource ('workspaces of a container'), making the tool's purpose unambiguous. It also distinguishes from siblings like gtm_containers_get (lists containers) and gtm_tags_get (lists tags).
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?
No guidance is provided on when to use this tool versus alternatives. The description does not specify prerequisites, such as needing an existing container, or when to use it instead of other tagging tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
psi_runA
PageSpeed Insights: analyze a URL (Core Web Vitals + Lighthouse). No OAuth needed; uses GOOGLE_PSI_API_KEY if set.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to analyze | |
| locale | No | e.g. ru, en | |
| category | No | Lighthouse categories | |
| strategy | No | Default mobile |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that no OAuth is needed and an API key is used, which is helpful for understanding authentication behavior. However, it does not mention rate limits, error handling, or what happens if the key is missing, leaving gaps in transparency.
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 a single, information-dense sentence with no filler words. It front-loads the core purpose and adds the key usage detail about OAuth. Every part 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?
Given no output schema, the description should ideally hint at return values (e.g., scores, reports). It does not, but the tool's purpose (Core Web Vitals + Lighthouse) implies typical results. For a simple analysis tool, this is adequate but not fully complete.
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 explains parameters. The description adds value by specifying that 'locale' is e.g. 'ru, en', that 'category' refers to Lighthouse categories, and that 'strategy' defaults to 'mobile'. This enriches the schema definitions without redundancy.
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 states the tool analyzes a URL using PageSpeed Insights, specifically mentioning Core Web Vitals and Lighthouse. This verb+resource combination is specific and distinguishes it from sibling tools like gsc_url_inspect or ga4_run_report.
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 states 'No OAuth needed; uses GOOGLE_PSI_API_KEY if set,' which provides clear guidance on when to use this tool (when OAuth is not required) compared to other tools that may need authentication. However, it does not state when not to use or mention alternatives.
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.
18 tool updates
v1.0.1- Added
g_set_code - Added
g_set_credentials - Removed
ga4_accounts_get - Removed
ga4_properties_get - Removed
ga4_property_get - Added
gsc_site_add - Added
gsc_site_delete - Added
gsc_sitemaps_get - Added
gsc_sites_get - Removed
gsc_url_inspect - Added
gtm_accounts_get - Added
gtm_container_create - Added
gtm_containers_get - Added
gtm_tags_get - Added
gtm_workspaces_get - Removed
idx_metadata - Removed
idx_url_delete - Added
psi_run
22 tool updates
v1.0.1- Removed
g_auth_status - Removed
g_authorize - Removed
g_set_code - Removed
g_set_credentials - Removed
ga4_datastream_get - Removed
ga4_realtime - Removed
ga4_run_report - Removed
gsc_search_analytics - Removed
gsc_site_add - Removed
gsc_site_delete - Removed
gsc_sitemap_delete - Removed
gsc_sitemap_get - Removed
gsc_sitemap_submit - Removed
gsc_sitemaps_get - Removed
gsc_sites_get - Removed
gtm_accounts_get - Removed
gtm_container_create - Removed
gtm_containers_get - Removed
gtm_tags_get - Removed
gtm_workspaces_get - Removed
idx_url_submit - Removed
psi_run
33 tool updates
v1.0.0- First observed
g_auth_status - First observed
g_authorize - First observed
g_set_code - First observed
g_set_credentials - First observed
ga4_accounts_get - First observed
ga4_datastream_create - First observed
ga4_datastream_get - First observed
ga4_datastreams_get - First observed
ga4_properties_get - First observed
ga4_property_create - First observed
ga4_property_get - First observed
ga4_realtime - First observed
ga4_run_report - First observed
gsc_search_analytics - First observed
gsc_site_add - First observed
gsc_site_delete - First observed
gsc_site_get - First observed
gsc_sitemap_delete - First observed
gsc_sitemap_get - First observed
gsc_sitemap_submit - First observed
gsc_sitemaps_get - First observed
gsc_sites_get - First observed
gsc_url_inspect - First observed
gtm_accounts_get - First observed
gtm_container_create - First observed
gtm_containers_get - First observed
gtm_tag_create - First observed
gtm_tags_get - First observed
gtm_workspaces_get - First observed
idx_metadata - First observed
idx_url_delete - First observed
idx_url_submit - First observed
psi_run
TDQS
Scored across 17 tools
Each tool targets a distinct service and action. For example, gtm_tag_create is clearly different from gsc_sites_get, and the descriptions remove any ambiguity. There is no overlap in functionality.
Most tools follow a 'service_operation' pattern (e.g., gtm_tag_create, ga4_property_create), but 'g_set_credentials' and 'g_set_code' deviate with a 'g_' prefix. 'psi_run' also breaks the pattern. This inconsistency could confuse an agent.
With 17 tools across multiple Google services (Search Console, GA4, Tag Manager, PageSpeed), the count is appropriate. Each tool serves a clear purpose, and the number is neither too small nor too large for the scope.
The tools cover basic CRUD for Search Console and GA4 setup, but lack update/delete for tags, sitemap submission, and Analytics Data API reporting. Some lifecycle operations are missing, which may require workarounds.
Maintenance
Related MCP Connectors
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
- VibeSEOOAuthdev.vibeseo
SEO research, audits, backlinks, GSC, and content workflow tools for AI agents.
Open-source SEO manager for coding agents: keyword research, content PRs, rank + Search Console.
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage Google Tag Manager, Google Search Console, and Google Analytics (GA4) through unified access to tags, search performance data, URL inspection, sitemaps, and analytics reporting.8 npmISC
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to query Google Search Console data including search analytics, URL inspection, sitemap management, and site performance monitoring, with per-user OAuth authentication.-
- AlicenseAqualityCmaintenanceConnects Google Search Console to AI assistants, enabling natural language analysis of SEO data. Provides read-only tools for properties, search analytics, URL inspection, and sitemaps.15MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to access Google Search Console search performance and index health data, including clicks, impressions, rankings, URL inspection, and sitemap management.2 npmMIT