Skip to main content
Glama

get_ai_visibility_metrics

Read-only

How visible a project's brand and its competitors are in AI answers over a window of whole UTC days (default the last 30, at most 180; dateFrom and dateTo choose it). pooled.brands gives each brand over every answer in the window, pooled as the app's Overview does: visibility with its ± margin, share of voice, sentiment and average position; pooled.clientByEngine gives the client per engine; snapshots holds the cells behind the pool (one per scan day × engine × market × brand, newest first, at most 500). source is blended (default), native or peec. summary: true returns the pooled figures without snapshots (a month of a busy project otherwise runs to about 60,000 characters); limit and offset page the snapshots (nextOffset); without them the call returns the newest 500 rows. A model the project has no answer from returns a note naming its engines. Definitions and cautions arrive in howToRead.

Input Schema

NameRequiredDescriptionDefault
limitNosnapshots rows per call, newest first (default and most 500). pooled always covers every row.
modelNoOne engine id: gpt-4o-search-preview = ChatGPT (GPT-5.6 Luna), gemini-2.0-flash = Gemini (3.6 Flash), sonar-pro = Perplexity (Agent API), claude-sonnet-4-6 = Claude (Sonnet 5.5), google-ai-overview = Google AI Overviews, google-ai-mode = Google AI Mode, bing-copilot = Microsoft Copilot, grok-3 = Grok (4.5), deepseek-chat = DeepSeek (V4.1 Flash), meta-ai = Meta AI (Muse Spark). All engines are pooled when omitted.
dateToNoLast day, YYYY-MM-DD (UTC, inclusive). Default: today.
marketNoOne market, exactly as listed in marketsInWindow. All markets are pooled when omitted, as in the app.
offsetNoSnapshots rows to skip: nextOffset from the previous call. Default 0.
sourceNoData source: "blended" (default — CrunchJunkie scans plus imported Peec AI data, an engine both track counted once with the CrunchJunkie scan winning), "native" (CrunchJunkie scans only) or "peec" (imported Peec AI data only).
summaryNotrue = pooled figures only, without the snapshots rows (a few thousand characters). Default false.
clientIdNoClient id — uses the AI-Visibility project its Overview opens in the app (the newest).
dateFromNoFirst day, YYYY-MM-DD (UTC, inclusive). Default: 30 days before dateTo.
projectIdNoAI-Visibility project id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / offset / maximum
      Added value: +9007199254740991
  2. Changed2 schema fields changed
    • changedInput schema / properties / offset / description
      Previous value: -"snapshots rows to skip: pass nextOffset from the previous call. Default 0."New value: +"Snapshots rows to skip: nextOffset from the previous call. Default 0."
    • changedInput schema / properties / source / description
      Previous value: -"Data source: \"blended\" (default — your scans plus imported Peec AI data, an engine both track counted once with your scan winning), \"native\" (your scans only) or \"peec\" (imported Peec AI data only)."New value: +"Data source: \"blended\" (default — CrunchJunkie scans plus imported Peec AI data, an engine both track counted once with the CrunchJunkie scan winning), \"native\" (CrunchJunkie scans only) or \"peec\" (imported Peec AI data only)."
  3. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnly/non-destructive/closed-world, and the description adds substantial behavior beyond that: snapshot rows are newest-first and capped at 500, nextOffset drives paging, blended source de-duplicates engines with the CrunchJunkie scan winning, and a model with no answers returns a note naming its engines. It even flags response-size economics (~60,000 vs a few thousand characters), which is real 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.

Conciseness4/5

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

It is dense and front-loads the scope and date window before the output breakdown, which is the right order. A few clauses (limit/offset, summary) largely duplicate the schema descriptions, and the long parenthetical cost estimate could be tightened, but there is little true waste.

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?

With 10 optional parameters and no output schema, the description carries the full burden and does so: it maps the return payload section by section, explains howToRead for definitions and cautions, and covers the empty-model edge case and response-size tradeoff. An agent can call this correctly and interpret the result without further context.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning not in the schema: the window is whole UTC days capped at 180, limit/offset apply only to snapshots while pooled always covers every row, and summary:true suppresses snapshots. That is genuine added semantics rather than restatement.

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

Purpose4/5

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

The opening clause names the resource precisely: brand and competitor visibility in AI answers over a whole-UTC-day window, and the description enumerates the returned structures (pooled.brands, pooled.clientByEngine, snapshots). It is slightly opaque as a fragment rather than a verb+resource statement and never names close siblings like get_visibility_trend or get_brand_perception to differentiate itself.

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

Usage Guidelines4/5

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

It gives concrete operational context: default last 30 days, hard cap of 180, use summary:true when a busy month would otherwise return ~60,000 characters, and use limit/offset with nextOffset to page snapshots. It stops short of stating when to prefer this over sibling analytics tools, so there are clear context cues but no exclusions.

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