AI Visibility Server
Analyze how your brand appears in AI-generated answers across ChatGPT, Perplexity, Gemini, and more: ranking position, visibility rate, competitor share-of-voice, sentiment, and the sources LLMs cite.
Overview
The AI Visibility Server exposes data about how a tracked brand shows up in the answers of LLM platforms (ChatGPT, Perplexity, Gemini, etc.). It covers brands, the prompts tracked against them, individual LLM executions ("chats"), competitor/entity mentions, and the sources LLMs cite.
Server Details
- Server Name:
ai-visibility-server - Version: 0.0.1
- Endpoint:
/mcp/ai-visibility - Authentication: Organization-level required (
x-api-keyheader)
Purpose
Answer questions about brand visibility in AI answers: ranking position and visibility rate per brand, competitor share-of-voice, sentiment of mentions, and which sources/domains influence what LLMs say.
Data Model
- Brands: the companies being tracked. Each brand has topics, and each topic has prompts.
- Prompts: the questions asked to LLM platforms to measure brand visibility.
- Chats: a single execution of a prompt against an LLM platform. Records the full LLM response, the brand's ranking position, the sub-brands mentioned with sentiment, and the sources cited.
- Ranking position: the MAIN brand's position in a chat's answer.
> 0= mentioned at that rank (1 is best),0= not mentioned. Brand visibility = percentage of completed chats with position > 0. - Sources: URLs the LLM cited in a chat, classified by source type (corporate, editorial, UGC, reference, institutional, other).
- Domains: cited page URLs rolled up to the site/domain level.
- Entities (sub-brands): the companies/products detected in LLM responses: the tracked brand itself (
isMain) and its competitors (isWatched). - Entity mentions: each entity's own ranking position and sentiment, recorded per chat.
Recommended Workflow
- Call Brands List to discover the organization's brands and get a
brandId. - Call Prompts List to find prompts for that brand (filter by topic, status, or search text).
- Call Chats List to find LLM executions of a prompt.
- Call Chat Detail to read the full LLM response, mentions, and cited sources for one chat.
- For citation analysis (which sites influence AI answers), call Source Types List, then Sources List or Domain List.
Every tool returns a formatted Markdown table with a one-line explanatory note underneath, so responses render directly in the assistant's answer without extra formatting work.
Available Tools
1. brands-list-tool
Purpose: List every tracked brand for the organization.
Input: None required.
Returns: id, name, URL, LLM providers tracked, topic count, prompt count.
When to use: Call this first in any AI Visibility conversation. Its id feeds every other tool.
2. prompts-list-tool
Purpose: List prompts (questions) tracked for a brand.
Input:
brandId(required)topicId,status(active/archived/suggested),search,includeFanouts,limit/offset(optional)
Returns: id, prompt text, topic, brand, status, type, likelihood score, chat count.
3. chats-list-tool
Purpose: List LLM executions ("chats") of prompts for a brand.
Input:
brandId(required)promptId,llmProvider,status(completed/processing/failed),rankedFrom/rankedTo,limit/offset(optional)
Returns: chat id, prompt, brand, provider, model, ranking position, status, ranked-at date.
Key concept: ranking_position is the MAIN brand's position, not a sub-brand's. > 0 = mentioned (1 = best), 0/empty = not mentioned. Brand visibility = % of completed chats with position > 0.
4. chat-detail-tool
Purpose: Get full detail of a single chat.
Input: chatId (required).
Returns: prompt text, LLM provider/model, ranking position, the full LLM response output, sub-brand mentions (position, sentiment score, sentiment keywords), and cited sources.
5. entity-list-tool
Purpose: List entities/sub-brands tracked for a brand: the main brand plus competitors.
Input:
brandId(required)isMain,isWatched,search,limit/offset(optional)
Returns: id, name, URL, main/watched flags, mention count, cited-source count.
When to use: Competitor and share-of-voice questions. Use the entity id as subBrandId in the sources/entity-mentions tools.
6. entity-mentions-list-tool
Purpose: List entity (sub-brand) mentions across chats, one row per entity appearance in an LLM response.
Input:
brandId(required)subBrandId,entityName,promptId,chatId,llmProvider,status,rankedFrom/rankedTo,limit/offset(optional)
Returns: chat id, entity id/name, the entity's own ranking position in that chat, sentiment score/keywords, provider, prompt id, ranked-at date.
Important: Only completed chats are included by default; pass status explicitly to inspect processing/failed chats.
When to use: "What position does competitor X get?", "average ranking of entity X", "who was mentioned in chat Y and in what order?"
7. source-types-list-tool
Purpose: List the source type taxonomy (corporate, editorial, UGC, reference, institutional, plus org-specific types).
Input: brandId (required).
Returns: id, name, slug, scope (global/organization), count of cited sources for the brand.
8. sources-list-tool
Purpose: List cited sources, grouped by the entity/sub-brand they mention.
Input:
brandId(required)promptId,chatId,sourceTypeId,subBrandId,isMainMentioned,search,dateFrom/dateTo,limit/offset(optional)
Returns: one row per entity, with citation count, unique cited URLs, distinct chats, and last-cited date. Completed chats only; sources without a linked sub-brand are excluded.
When to use: "Which sites influence our AI visibility", "what pages does ChatGPT cite for this prompt".
9. domain-list-tool
Purpose: List cited source domains, grouped by entity/sub-brand.
Input: same shape as sources-list-tool. brandId required; promptId, chatId, sourceTypeId, subBrandId, isMainMentioned, search, dateFrom/dateTo, limit/offset optional.
Returns: one row per sub-brand domain, with citation count, unique cited URLs, distinct chats, and last-cited date. Completed chats only.
When to use: When the question is specifically about domains/sites ("top cited sites").
sources-list-tool and domain-list-tool both group citations by the sub-brand/entity they mention and support nearly the same filters. In the current implementation they return very similar data, so check both if one doesn't give the shape you expect.
Notes
- All data is automatically scoped to the authenticated organization.
- Free-text
searchparams use contains-match by default; only exact-match when explicitly requested. - Dates are always
YYYY-MM-DD.
Connecting a Client
The AI Visibility Server is a remote HTTP MCP server. See the Claude Integration guide to connect it to Claude Code, Claude Desktop, or claude.ai, or the LLM Integration Guide for OpenAI.