Skip to main content

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-key header)

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.
  1. Call Brands List to discover the organization's brands and get a brandId.
  2. Call Prompts List to find prompts for that brand (filter by topic, status, or search text).
  3. Call Chats List to find LLM executions of a prompt.
  4. Call Chat Detail to read the full LLM response, mentions, and cited sources for one chat.
  5. 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").

note

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 search params 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.