Skip to main content
Glama
Unilytics MCP Server

Unilytics MCP Server

Official

ai_citation_check

Measure which sources AI answer engines cite for prompts and how often they cite your brand’s domain, revealing citation rate, share and source mix across ChatGPT, Gemini, Google AI and Perplexity.

Instructions

Start a check of which sources AI answer engines cite for up to 5 prompts, and how often they cite a brand's own domain.

Asks each prompt `runs` times on each engine: chatgpt and gemini (their consumer apps), google_ai_mode,
google_ai_overview, claude (Claude Sonnet 5.5 with web search) and perplexity. Returns a job_id at once;
Claude and Perplexity answer during this call, Google AI Mode usually within a minute, ChatGPT and Gemini within
about 5 minutes. get_ai_citation_check(job_id) returns the results: per engine and per prompt, citation rate
(answers citing the brand's domain ÷ answers citing any source), citation share (the brand's citations ÷ all
citations), mention rate and share of voice when names are given, every cited URL and domain with its source
category (owned, competitor, social, institution, pr_wire, earned), and the category mix per segment. The
engines' answer text is not returned.

Billing: the measured vendor cost of this call (about 65 credits per prompt per run with all six engines;
claude is most of it). A check that starts nothing is not charged. The same check repeated within 15 minutes
is refused (CHECK_EXISTS, not charged) with the first check's job_id. At most 3 checks run at once per user;
Claude and Perplexity together answer at most 20 times per check.

Use when the user asks which sources ChatGPT, Gemini, Google AI Mode/Overviews, Claude or Perplexity cite for
a query, a domain's citation rate or citation share in AI answers, or a citation-mix analysis.

Args:
    prompts: 1–5 questions a customer might ask an AI assistant, each up to 700 characters.
    project_id: Optional Unilytics project (from list_projects); its domain is the brand's domain and its
        competitor URLs count as competitors, unless given below.
    brand_domain: The brand's own domain (e.g. "hubspot.com"); required without a project_id that has one.
    competitor_domains: Up to 20 competitor domains, added to the project's.
    brand: Optional brand name, for mention rate.
    competitor_names: Up to 20 competitor names, for share of voice.
    segments: Optional label per prompt (same order), for the citation mix per segment.
    engines: Subset of chatgpt, gemini, google_ai_mode, google_ai_overview, claude, perplexity (default all).
    runs: Times each prompt is asked per engine, 1–3 (default 1); answers vary run to run.
    country: Searcher location: US, GB, CA, AU, IN, DE, FR, ES, IT, NL, BR, MX, SG, AE, IE, NZ or ZA.
    language_code: en, de, fr, es, it, nl or pt (the scraped engines' interface language).

[Provider: DataForSEO (ChatGPT, Gemini, Google AI Mode, Google AI Overviews), Anthropic (Claude), Perplexity]

Input Schema

NameRequiredDescriptionDefault
runsNo
brandNo
countryNoUS
enginesNo
promptsYes
segmentsNo
project_idNo
brand_domainNo
language_codeNoen
competitor_namesNo
competitor_domainsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.1.0

TDQS

A5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, openWorldHint=true and idempotentHint=false; the description goes far beyond by disclosing asynchronous job behavior, per-engine latency (immediate for Claude/Perplexity, ~5 minutes for ChatGPT/Gemini), billing at ~65 credits per prompt per run, concurrency caps (3 checks per user, 20 Claude+Perplexity answers per check), and that answer text is not returned. None of this contradicts the annotations: it starts a non-idempotent, externally-hitting job, consistent with idempotentHint=false and openWorldHint=true.

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

Conciseness5/5

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

Roughly four structured blocks — purpose, execution/timing, billing and limits, then usage and args — with the core purpose front-loaded and no filler. Given 11 undocumented parameters and no output schema, the length is justified by content rather than padding.

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?

A high-complexity, multi-vendor, asynchronous, billed tool with no output schema and no parameter documentation; the description supplies result-field semantics (citation rate, citation share, mention rate, share of voice, source categories per URL, category mix per segment), timing expectations, cost, error behavior, and every argument's meaning. Nothing an agent needs to invoke it correctly appears to be missing.

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 description coverage is 0%, so the description carries the full burden, and it does: every one of the 11 parameters is given meaning and constraints — prompts (1–5, ≤700 chars), runs (1–3, default 1, answers vary), engines subset with default all, brand_domain required without a project with a domain, competitor_domains/competitor_names up to 20, segments as per-prompt labels in the same order, plus an explicit country and language_code list that the schema does not enumerate.

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?

Opens with a specific verb and resource: "Start a check of which sources AI answer engines cite for up to 5 prompts, and how often they cite a brand's own domain." It also explicitly names its sibling, get_ai_citation_check(job_id), as the results-retrieval counterpart, so an agent can route between the two without opening either schema.

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 an explicit "Use when" clause covering the user intents that select this tool (which sources are cited, citation rate/share for a domain, citation mix). It also states a clear exclusion condition: the same check repeated within 15 minutes is refused with CHECK_EXISTS and returns the first job_id, so the agent knows not to retry blindly.

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

Deploy Server

Other Tools