Skip to main content
Glama
Akxan
by Akxan

CTR opportunities (page-1 rankings with weak CTR)

gsc_ctr_opportunities
Read-onlyIdempotent

Identify top-ranking queries with low CTR and high impressions, benchmarked by position, to prioritize title and meta description rewrites for more clicks.

Instructions

Ranks well but is not clicked. Queries already in the top positions whose CTR is far below the typical CTR for that position, weighted by impressions: the fastest wins from rewriting titles and meta descriptions. Not yet in the top 10 is gsc_opportunities instead. Benchmark CTR by position: 1: 28%, 2: 15%, 3: 11%, 4: 8%, 5: 7%, 6-10: 5-3%.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
topNo
endDateNoEnd: YYYY-MM-DD, today, yesterday or NdaysAgo (data lags 2-3 days).3daysAgo
filtersNoScope the analysis, e.g. page contains '/es/' for one language folder. Defaults to the whole property.
siteUrlYesSearch Console property, e.g. 'sc-domain:example.com' (see gsc_list_sites).
dimensionNopage
startDateNoStart: YYYY-MM-DD, today, yesterday or NdaysAgo (data lags 2-3 days).28daysAgo
searchTypeNoweb
maxPositionNo
minImpressionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.10.0
    • addedInput schema / properties / filters
      Added value: +{
      +  "description": "Scope the analysis, e.g. page contains '/es/' for one language folder. Defaults to the whole property.",
      +  "items": {
      +    "properties": {
      +      "dimension": {
      +        "enum": [
      +          "query",
      +          "page",
      +          "country",
      +          "device",
      +          "searchAppearance"
      +        ],
      +        "type": "string"
      +      },
      +      "expression": {
      +        "description": "Value; device: DESKTOP/MOBILE/TABLET, country: 3-letter code like 'usa'.",
      +        "type": "string"
      +      },
      +      "operator": {
      +        "default": "equals",
      +        "enum": [
      +          "equals",
      +          "notEquals",
      +          "contains",
      +          "notContains",
      +          "includingRegex",
      +          "excludingRegex"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "dimension",
      +      "expression"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / siteUrl / description
      Previous value: -"Search Console property, e.g. 'sc-domain:example.com' or 'https://example.com/' (see gsc_list_sites)."New value: +"Search Console property, e.g. 'sc-domain:example.com' (see gsc_list_sites)."
  2. Changed5 schema fields changedv0.5.1
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / endDate / description
      Previous value: -"End date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days."New value: +"End: YYYY-MM-DD, today, yesterday or NdaysAgo (data lags 2-3 days)."
    • addedInput schema / properties / minImpressions / maximum
      Added value: +9007199254740991
    • changedInput schema / properties / siteUrl / description
      Previous value: -"Property URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it."New value: +"Search Console property, e.g. 'sc-domain:example.com' or 'https://example.com/' (see gsc_list_sites)."
    • changedInput schema / properties / startDate / description
      Previous value: -"Start date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days."New value: +"Start: YYYY-MM-DD, today, yesterday or NdaysAgo (data lags 2-3 days)."
  3. First observedv0.3.0

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint: false, so the safety profile is covered. The description adds valuable behavioral context by explaining the ranking logic (CTR far below typical for that position, weighted by impressions) and provides concrete benchmark CTR rates by position. It does not contradict annotations and gives more than the minimal safety disclosure, though it doesn't describe output 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences with no fluff. It leads with a punchy summary ('Ranks well but is not clicked.'), then explains the logic, distinguishes the sibling tool, and provides benchmark data. Every sentence earns its place and the structure is front-loaded with the most critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters and no output schema, the description covers the core concept, differentiation, and gives practical benchmark data. It does not explain how to combine parameters or what the output looks like, but the annotations cover safety, the schema describes dates and filters, and the description provides enough to make a correct call. Some gaps remain around searchType and dimension interactions, but overall it is fairly complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 44%, meaning several parameters (top, dimension, searchType, maxPosition, minImpressions) lack descriptions in the schema. The description compensates partially by mentioning 'top positions' (relating to maxPosition) and 'weighted by impressions' (relating to minImpressions), but it does not explain filters, searchType, or dimension. Given the low coverage, the description should have provided more parameter-specific guidance, but it does add some conceptual meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: it identifies queries that rank well (in top positions) but have weak CTR, weighted by impressions. It distinguishes itself from the sibling gsc_opportunities by explicitly noting that tool is for queries not yet in the top 10. The verb 'identifies' is implied but the resource and scope are specific, making it distinct from other GSC tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool vs. the alternative: 'Not yet in the top 10 is gsc_opportunities instead.' This provides a clear exclusion condition. It also implies usage is for queries already ranking in top positions, which is a clear context signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.