Skip to main content
Glama

ai_visibility_360

Read-onlyIdempotent

AI Visibility 360 | the caller's OWN brand-visibility report across the AI assistants (ChatGPT, Claude, Gemini, Perplexity, optionally Grok/DeepSeek/Mistral), read deterministically from stored runs server-side (the exact numbers the user sees in the app | nothing re-derived, NO LLM runs on this read and no run is started). In one sentence: which brands ChatGPT, Claude, Gemini and Perplexity recommend when someone asks about your category. Call it when a user asks "how visible is my brand in ChatGPT", "do assistants recommend us or a competitor", "which sources do the assistants cite", "what should we do to show up more", "did the AI visibility work turn into real traffic". Sections: overview (visibility score with delta and rank, the brand-vs-competitor leaderboard with visibility / share of voice / sentiment / average position, the per-provider score matrix and the concrete models that answered), prompts (per-prompt brand score vs the strongest competitor plus per-question-category rollups), sources (citation share of the brand's own domains, the cited-domain leaderboard, which providers expose citations at all), actions (the deterministic to-do queue: earned = pages to get featured on, owned = pages to build, each with impact and status), answers (the newest stored assistant answers with detected brand mentions and cited domains, text truncated honestly), impact (GA4 sessions referred by AI assistants for the property explicitly linked to this brand; an unlinked brand gets the honest empty state and the reason, never another property's numbers). EVERY number here counts only questions that do NOT name your own brand: a question naming the brand has already handed the assistant the answer. That holds for visibility, share of voice, rank and the per-assistant matrix AND for sources, gaps, pages, assistant searches, domain movers, perception and action effects. The questions that do name it are still measured, in rankings_branded, and the population block (present on every section set) carries both counts | never add the two together. The two evidence views keep every row instead: the prompt table (flag names_you) and answers (flag question_names_your_brand). A metric the window cannot support is null or absent (an honest dash), never a zero. Reads ONLY brands owned by the calling account; runs, prompt edits and settings are deliberately not exposed here. Recipe: pull the sections you need and interpret them yourself, citing the numbers. For a custom deliverable, write your derived table with create_dataset + write_rows and chart it with create_chart_from_spec. Requires the caller's own autario account (API key or OAuth) with an AI Visibility brand set up | see get_app_context("ai-visibility").

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
daysNoAnalysis window in days over the stored runs (1-365, default 30).
brandNoBrand name or brand id. Optional when the account has exactly one brand; with several brands the tool answers with the list so you can re-call with one (nothing is picked for you).
formatNoOutput wire format for this MCP call. Default 'toon' (Token-Oriented Notation, fewest tokens, best for tabular rows). 'compact' = minified JSON. 'json' = pretty JSON for readability. The REST API always returns JSON regardless.
sectionsNoWhich report sections to return. Default ["overview"]. Request only what the question needs (token efficiency); call again for more. searches = the web searches the assistants ran behind their answers (grouped by topic, brands named in them); movers = cited domains that are new / trending / losing against the prior window; pages = the cited pages with what is ON them (title, page type, which tracked brands the page names); crawlability = what each domain's robots.txt says to each AI crawler (GPTBot, ClaudeBot, PerplexityBot...) plus llms.txt; perception = the descriptor words the answers use next to each brand, as a brand-by-word matrix; action_effects = the brand's visibility 14 days before and after every action marked done; gaps = the sources that cite a competitor and never this brand, with gap score, used-as-a-source share, prompt coverage and competitor rate (each defined on the page; there is deliberately no retrieval rate, because only citations are observable); model_rankings = the brands each assistant names most, as a rank order with the owned brand flagged.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / sections / description
      Previous value: -"Which report sections to return. Default [\"overview\"]. Request only what the question needs (token efficiency); call again for more. searches = the web searches the assistants ran behind their answers (grouped by topic, brands named in them); movers = cited domains that are new / trending / losing against the prior window; pages = the cited pages with what is ON them (title, page type, which tracked brands the page names); crawlability = what each domain's robots.txt says to each AI crawler (GPTBot, ClaudeBot, PerplexityBot...) plus llms.txt; perception = the descriptor words the answers use next to each brand, as a brand-by-word matrix; action_effects = the brand's visibility 14 days before and after every action marked done."New value: +"Which report sections to return. Default [\"overview\"]. Request only what the question needs (token efficiency); call again for more. searches = the web searches the assistants ran behind their answers (grouped by topic, brands named in them); movers = cited domains that are new / trending / losing against the prior window; pages = the cited pages with what is ON them (title, page type, which tracked brands the page names); crawlability = what each domain's robots.txt says to each AI crawler (GPTBot, ClaudeBot, PerplexityBot...) plus llms.txt; perception = the descriptor words the answers use next to each brand, as a brand-by-word matrix; action_effects = the brand's visibility 14 days before and after every action marked done; gaps = the sources that cite a competitor and never this brand, with gap score, used-as-a-source share, prompt coverage and competitor rate (each defined on the page; there is deliberately no retrieval rate, because only citations are observable); model_rankings = the brands each assistant names most, as a rank order with the owned brand flagged."
    • changedInput schema / properties / sections / items / enum
      Previous value: -[
      -  "overview",
      -  "prompts",
      -  "sources",
      -  "actions",
      -  "answers",
      -  "impact",
      -  "searches",
      -  "movers",
      -  "pages",
      -  "crawlability",
      -  "perception",
      -  "action_effects"
      -]New value: +[
      +  "overview",
      +  "prompts",
      +  "sources",
      +  "actions",
      +  "answers",
      +  "impact",
      +  "searches",
      +  "movers",
      +  "pages",
      +  "crawlability",
      +  "perception",
      +  "action_effects",
      +  "gaps",
      +  "model_rankings"
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / sections / description
      Previous value: -"Which report sections to return. Default [\"overview\"]. Request only what the question needs (token efficiency); call again for more."New value: +"Which report sections to return. Default [\"overview\"]. Request only what the question needs (token efficiency); call again for more. searches = the web searches the assistants ran behind their answers (grouped by topic, brands named in them); movers = cited domains that are new / trending / losing against the prior window; pages = the cited pages with what is ON them (title, page type, which tracked brands the page names); crawlability = what each domain's robots.txt says to each AI crawler (GPTBot, ClaudeBot, PerplexityBot...) plus llms.txt; perception = the descriptor words the answers use next to each brand, as a brand-by-word matrix; action_effects = the brand's visibility 14 days before and after every action marked done."
    • changedInput schema / properties / sections / items / enum
      Previous value: -[
      -  "overview",
      -  "prompts",
      -  "sources",
      -  "actions",
      -  "answers",
      -  "impact"
      -]New value: +[
      +  "overview",
      +  "prompts",
      +  "sources",
      +  "actions",
      +  "answers",
      +  "impact",
      +  "searches",
      +  "movers",
      +  "pages",
      +  "crawlability",
      +  "perception",
      +  "action_effects"
      +]
  3. Added

TDQS

A4.9/5.0
Behavior5/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral context: deterministic reads, no re-derived numbers, no LLM run, honest null/empty states, branded-question exclusions, and account ownership guarantees. This goes well beyond what annotations alone convey.

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?

The description is front-loaded with purpose and call triggers, and nearly every sentence carries distinct information. However, it is a long, dense block with repeated emphasis on 'own brand' and 'nothing re-derived', which could be tightened or structured with bullets for easier scanning.

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 no output schema, the description carries the full burden of explaining return content, and it does: it enumerates sections, empty-state behavior, metric exclusion rules, auth prerequisites, and account ownership constraints. An agent has enough context to call the tool correctly without external references.

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 100%, but the description adds decision-critical meaning: brand optionality and multi-brand behavior ('nothing is picked for you'), detailed semantics for every section enum, and format nuances such as the REST API always returning JSON. This materially improves correct parameter selection.

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 opens with a specific verb and resource: reads the caller's own AI-assistant brand-visibility report from stored runs. It clearly distinguishes itself from sibling analytics tools (audience_360, seo_360, social_360) by focusing on AI-assistant visibility and explicitly stating no LLM run is started.

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?

It provides explicit call triggers with example user queries ('how visible is my brand in ChatGPT', 'do assistants recommend us or a competitor'), and explains when not to use it: runs, prompt edits, and settings are deliberately not exposed. It also routes custom deliverables to create_dataset, write_rows, and create_chart_from_spec.

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