Skip to main content
Glama

Quattr

search_performance

Read-only

Your actual Google Search Console metrics for one period — clicks, impressions, CTR, average position, plus whole-site Unique Keywords / Unique Pages counts — at site, keyword or page grain, with top-N ranking. Use for "what were my total clicks last month?", "top 10 keywords by impressions", "how many unique keywords / pages do we rank for?", "non-brand organic clicks". Returns organic acquisition metrics (NOT paid) and does not guarantee organic conversion counts. For a complete paid-versus-organic comparison including conversions on both sides use paid_organic_performance_comparison. Set comparison_range for period-over-period changes; for biggest gainers/losers use seo_ranking_movement_report. When the user names two periods, date_range is the first period they named (the selected period) and comparison_range is the second, even when the first period is the earlier month — do not swap them. Deltas are the change from the earlier period to the later one, whichever was named first. A positive delta means the later period is higher. For average position, a positive delta is a worse rank.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "date_range": "<date_range>"
    },
    "name": "search_performance"
  }
}

Input Schema

NameRequiredDescriptionDefault
brandNoRestrict to branded ("Yes") or non-branded ("No") demand. At grain:"site" (with no other granular filter) this returns a SINGLE site-level total as a keyword-attributed rollup with a coverage caveat; combined with granular filters or keyword/page grain it behaves as a per-row slice.
grainNosite = whole-site totals (one row); keyword/page = per-keyword/per-page rows (top-N).site
top_nNoRow cap at keyword/page grain (ignored at site grain).
intentNoRestrict to one intent (a customer keyword group). At grain:"site" (with no other granular filter) this returns a SINGLE site-level total as a keyword-attributed rollup with a coverage caveat; combined with granular filters or keyword/page grain it behaves as a per-row slice. Resolve the id with resolve_entity first.
mediumNoSource medium. DEFAULTS to "google/organic" — these are organic Search Console metrics. Pass "google/cpc" for paid, or another medium to change it. (The underlying dataset blends organic + paid, so a default keeps "clicks" organic.)
sourceNoWhere Google search performance data is read from. Use "bigquery" ONLY when the user explicitly asks for BigQuery as the source AND describe_data_sources reports it available from live customer configuration — it returns far more granular per-query data (privacy-suppressed impressions appear under "[anonymized by google]").default
filtersNoCurated GSC filters with operators — e.g. category, country, device, rank_bucket, traffic_source, search_type, page, query. e.g. category eq "Hosting": [{field:"category",op:"eq",value:"Hosting"}]; country in usa,can: [{field:"country",op:"eq",value:["usa","can"]}]; page contains "/blog/": [{field:"page",op:"contains",value:"/blog/"}]. regex/not_regex only on query/page.
metricsNoWhich metrics to return; defaults to all four standard metrics. unique_keywords / unique_pages are whole-site COUNT totals (use at grain:"site").
sort_byNoSort metric at keyword/page grain.impressions
date_rangeYesExplicit date range, e.g. "2026-05-01 to 2026-05-31". Both endpoints are INCLUSIVE — the END day is covered (a 7-day range = 7 days). Quattr weeks run Sunday–Saturday; for "last week" use the most recent complete Sun–Sat span.
granularityNoReturn a whole-site TIME SERIES bucketed by day / week / month / quarter instead of a single-period total — e.g. "weekly clicks over the last 26 weeks". Mutually exclusive with comparison_range (use one or the other). Trend is whole-site (grain / brand / intent / filters are ignored in v1).
sort_directionNoRanking direction. Defaults to QWA's ranked-table rule: descending for clicks/impressions/CTR, ASCENDING for position (lower is better), so "top pages by position" returns the BEST-ranked rows exactly as the app does. Pass "desc" explicitly for the inverse question — the WORST-ranked pages.
date_range_modeNoREQUIRED when granularity is set. Use "calendar" for YTD or another explicit calendar period: keep the requested start and return only complete buckets inside it. Use "rolling" for "last N days/weeks/months/quarters": preserve N complete buckets by shifting the full window backward when needed.
comparison_rangeNoThe second period the user named. date_range stays the first period (selected), even when it is earlier. "June vs July" → date_range is June and comparison_range is July, e.g. "2026-07-01 to 2026-07-31". Do not reorder so the later month becomes selected. Deltas still read from the earlier period to the later one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / comparison_range / description
      Previous value: -"Add period-over-period deltas vs this explicit range, e.g. \"2026-04-01 to 2026-04-30\"."New value: +"The second period the user named. date_range stays the first period (selected), even when it is earlier. \"June vs July\" → date_range is June and comparison_range is July, e.g. \"2026-07-01 to 2026-07-31\". Do not reorder so the later month becomes selected. Deltas still read from the earlier period to the later one."
  2. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, non-destructive, not open-world), and the description goes well beyond them: it discloses that results are organic not paid, that organic conversion counts are not guaranteed, the keyword-attributed rollup caveat at site grain, and the exact delta/period-swap semantics. This is rich behavioral context an agent cannot get from the schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded with the core purpose and example queries, then routes to siblings, then handles the tricky period/delta conventions. Slightly long and the comparison_range guidance is echoed in both the description and the schema, costing a little economy, but every block is purposeful.

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

Completeness5/5

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

For a 14-parameter analytical tool with no output schema, the description covers grain/top-N behavior, default medium, metrics semantics, filtering, and period-comparison conventions — everything needed to call it correctly without opening the schema.

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

Parameters5/5

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

Schema coverage is already 100%, but the description adds real meaning on top: it defines date_range vs comparison_range ordering (first-named period stays selected, no swapping), delta direction conventions, average-position sign inversion, and the correct value for sort_direction. That is more than the schema conveys.

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?

Names the specific resource (Google Search Console organic metrics: clicks, impressions, CTR, position, unique keywords/pages), the supported grains (site/keyword/page) and top-N ranking. It also explicitly distinguishes itself from paid_organic_performance_comparison and seo_ranking_movement_report, so an agent can route correctly.

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?

Provides concrete trigger phrasings ('what were my total clicks last month?', 'top 10 keywords by impressions'), states the organic-only scope, and names the alternative tool plus the condition that selects it (complete paid-vs-organic comparison → paid_organic_performance_comparison; gainers/losers → seo_ranking_movement_report).

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources