Skip to content
Marketing
MCP

citation-intelligence

Ships with citation-intelligence: A free, self-hosted MCP server that tells your agent what LLMs cite - across Perplexity, Google AI Overviews, ChatGPT, Claude, Gemini, and Bing.

From plugin
citation-intelligence
81 skill1 MCP

Claude Code

$ claude mcp add citation-intelligence -- npx -y @automatelab/citation-intelligence

Security report

Found

Low risk

  • Known flaws

    None known

  • Signed build

    No

    No build provenance published

  • Maintained

    Nov 2, 2026

    Last push

  • Licence

    MIT

  • Runs as

    npx

    On your machine

  • Deprecated

    No

Signals from public registries, not an audit. Checked Nov 13, 2026.

citation-intelligence README

Citation Intelligence MCP

A free, self-hosted MCP server that tells your agent what LLMs cite - across Perplexity, Google AI Overviews, ChatGPT, Claude, Gemini, and Bing.

npm version license node CI

What this is

An MCP server for agents and developers who need to know which URLs get cited by AI search engines for any query. Install once, query from any MCP-compatible client (Claude Desktop, Cursor, Claude Code, Continue, Cline, n8n, LangGraph). Self-hosted, no account, no centralized backend. Bring your own API keys; nothing is stored on a remote server.

Who this is for

Install this if you're:

  • Building an agent that does research and want it to cite sources LLMs already trust
  • A solo dev or indie hacker checking whether your SaaS is showing up in AI search
  • A content creator confirming your articles are being cited by ChatGPT, Claude, or Perplexity
  • An SEO or GEO practitioner who wants programmatic citation data without a $295-$499/mo dashboard
  • Running an editorial pipeline and want citation-deficit-driven topic selection
  • Comparing competitor visibility across AI engines for any niche

Do NOT install this if you want:

  • A polished marketing dashboard with charts and team seats - try Profound, AthenaHQ, or Otterly.AI
  • A hosted service with SLAs - this is self-hosted by design
  • Citation tracking for academic papers - try citecheck
  • 350M+ pre-modeled prompts - that's Ahrefs Brand Radar

Why this exists

The AI citation tracking market is dominated by VC-funded dashboards starting at $295/mo. None ships MCP-first. If you're an agent or developer who wants citation data piped directly into your workflow - not into a SaaS login - there isn't a tool for you. This is that tool.


Tools

Tools are grouped into seven namespaces: citations_*, domain_*, signals_*, panel_*, report_*, competitors_*, audit_*. The prefix is the question category; the suffix is the action. Wire names use underscores (not dots) so Anthropic-API-based MCP clients (Claude Desktop, Claude Code) can forward the tool list without HTTP 400.

Start with citations_provenance or domain_am_i_cited. Single-engine results (citations_check with a pinned engine) are directional; multi-engine consensus is the honest signal. A URL cited by 4 of 5 engines is a very different finding than one cited by 1.

citations_* — query-level: who cites what, with what evidence

ToolPurpose
citations_provenanceRecommended first tool. Fan a query across engines; per-URL cross-engine consensus matrix. Returns interpretation_note per engine.
citations_checkURLs cited by Perplexity / Claude / ChatGPT / Gemini / Google AI Mode for a query; or web rank via bing_serp / brave_serp
citations_evidenceExtract the cited snippet from raw_answer for each citation (why, not just that)
citations_predictCitation likelihood from public signals - no LLM fired
citations_trendTime-series report of citation rate + per-query gained/lost deltas
citations_freshnessRecency score (halflife=365d) for the pages an engine cites

domain_* — domain-level: am I cited, what for

ToolPurpose
domain_am_i_citedDomain citation check. With engine=auto (default): fans across all available LLM engines, returns per-engine breakdown + cross-engine consensus. Pin engine= to reduce cost.
domain_cited_forQueries the domain has been cited for, from local cache
domain_cited_for_diffDiff of domain_cited_for between two time windows for a domain

signals_* — external signals: AI Overview, Wikipedia, GSC, answer-box position

ToolPurpose
signals_ai_overviewGoogle AI Overview presence + cited sources
signals_wikipediaList Wikipedia articles referencing a domain (zero keys)
signals_gsc_gapJoin Google Search Console performance with AI citation status
signals_answer_boxBin each citation's first mention in raw_answer into early/middle/late thirds

panel_* — saved query panels (editorial watchlists)

ToolPurpose
panel_trackSave / load / list named query panels (editorial watchlists)
panel_runRun a panel through domain_am_i_cited and snapshot to disk

report_* — turnkey reporting artifacts

ToolPurpose
report_visibilityOne-call AI visibility report over a query set (or panel): citation rate (mention frequency), share of voice vs competitors, average rank, and brand sentiment. Returns structured data + a Markdown artifact for a public page.

competitors_* — competitive landscape per query

ToolPurpose
competitors_canonical_setTop cited domains per query, aggregated across engines
competitors_competeEnd-to-end competitive snapshot: your URL vs top cited competitors
competitors_compareSide-by-side citations_predict across 2-10 URLs

audit_* — fixable on-page / on-site checks

ToolPurpose
audit_schemaDeep schema.org validation - required fields per @type, malformed JSON-LD
audit_structured_dataRepair-oriented schema.org diagnostics + suggested patches
audit_crawler_accessVerify GPTBot / ClaudeBot / PerplexityBot / CCBot / Google-Extended etc. can fetch a URL
audit_sitemapBulk citations_predict across every URL in a sitemap, worst-first
audit_sitemap_mapCross-reference sitemap URLs with cached citations (inverse of audit_sitemap)
audit_llms_txtGenerate an llms.txt (https://llmstxt.org) from a sitemap

Prompts

Server-side prompt templates the client can offer end users (call via the MCP prompt list):

  • audit_citation_readiness(url) - chains citations_predict + audit_schema
  • audit_competitor_snapshot(query, your_url?) - chains competitors_canonical_set + competitors_compete
  • audit_crawler_checkup(url) - runs audit_crawler_access and writes a remediation list
  • audit_gap_analysis(domain, days?) - drives signals_gsc_gap and suggests next moves
  • audit_sitemap_coverage(sitemap_url) - runs audit_sitemap_map and recommends priorities

Resources

Cache views the client can read or subscribe to (no tool call required):

  • citation://cache/summary - entry counts by type/engine, unique queries/URLs, oldest/newest
  • citation://panels - saved panels + per-panel snapshot counts
  • citation://docs/llms-txt - llms.txt primer (markdown)
  • citation://docs/ai-crawlers - AI crawlers cheatsheet (markdown)
  • citation://domain/{domain}/cited-for - dynamic template: citations for {domain}

What this actually measures

Every response includes a surface field that tells you exactly how the data was collected. Understanding this is important before drawing conclusions.

SurfaceEnginesWhat it means
consumer_scrapeperplexity, google_ai_modeProxied through a real consumer-facing AI search product. Closest to what your users see.
api_proxyclaude, openai, geminiAPI call to a search-enabled LLM. May differ from consumer product behavior — different model versions, no UI-level ranking logic, no personalization. Use as a directional proxy, not as ground truth.
web_rankbing_serp, brave_serpTraditional web search rank (not LLM citation). Measures whether a URL appears in SERP results, not whether an LLM cites it.
static_signalcitations_predict, signals_wikipediaOffline signal computed from public data. No live LLM query.

Per-engine notes

perplexity (consumer_scrape) — Sonar Pro via the Perplexity API with a consumer-equivalent system prompt. Reasonably close to Perplexity.ai. Citations come from search_results in the response; the citations fallback contains URL-only entries without title.

claude (api_proxy) — Claude Sonnet via the Anthropic Messages API with web_search tool enabled. The consumer Claude.ai product uses different routing and ranking logic. Citation behavior can differ, especially for recent/time-sensitive queries.

openai (api_proxy) — gpt-4o + the web_search_preview tool via the OpenAI Responses API. Replaces the deprecated gpt-4o-search-preview alias OpenAI retired; base gpt-4o plus the tool is the supported path.

gemini (api_proxy) — Gemini 2.5 Pro via the Generative Language API with google_search grounding. Consumer Gemini uses the same grounding index but different re-ranking. Results are directional.

google_ai_mode (consumer_scrape) — Google AI Mode results via SerpAPI. Closest to what users see in Google Search. Requires SERPAPI_KEY.

bing_serp / brave_serp (web_rank) — Traditional SERP rank. Does NOT measure LLM citations. Use citations_check with these engines to compare organic web rank against LLM citation rank. domain_am_i_cited refuses these engines — it only measures LLM behavior.

The proxy nature of api_proxy engines is a feature, not a bug: it lets you run citation checks without consuming expensive consumer-product quota. Just don't report API-proxy numbers as "ChatGPT cites you" without the caveat.

Every tool response includes an interpretation_note field that summarizes the fidelity in one sentence. Full per-engine fidelity ratings: docs/surface-fidelity.md.


Quick start

npx -y @automatelab/citation-intelligence

Requires Node 20 or later.

Claude Desktop

Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "citation-intelligence": {
      "command": "npx",
      "args": ["-y", "@automatelab/citation-intelligence"],
      "env": {
        "PERPLEXITY_API_KEY": "pplx-...",
        "SERPAPI_KEY": "...",
        "ANTHROPIC_API_KEY": "sk-ant-...",
        "OPENAI_API_KEY": "sk-...",
        "GEMINI_API_KEY": "..."
      }
    }
  }
}

Set only the keys you have. Any MCP client that supports stdio transport works - same command / args pattern.

How it stays free

  • No central backend. The server runs on your machine. Nothing is uploaded.
  • Free tier first. SerpAPI gives 100 free Google AI Overview lookups/month. Bing Web Search has a free tier. Perplexity offers free Sonar access on signup.
  • Bring your own paid keys if you want the premium engines (Claude, ChatGPT, Gemini). Keys pass through to the vendor and never touch any third party.
  • Local cache at ~/.config/citation-intelligence/cache.json. Repeated queries hit cache, not API. Default TTL: 7 days.
  • citations_predict runs with zero keys - it scores citation likelihood from public signals (Wikipedia, schema.org, llms.txt, GitHub) without firing any LLM.

Privacy

  • All API calls go from your machine directly to the vendor (Anthropic, OpenAI, Google, Perplexity, Bing, SerpAPI).
  • No proxy. No analytics. No telemetry by default.
  • API keys are read from environment variables on the MCP process - never logged, never persisted.
  • Cache file lives at ~/.config/citation-intelligence/cache.json. Delete it any time.

Environment variables

VarPurposeFree tier?
PERPLEXITY_API_KEYcitations_check (perplexity — consumer_scrape)Yes

Stars on GitHub

Momentum

stars in total
8
Star history of AutomateLab-tech/citation-intelligence on GitHub, a chart by star-history.com

More MCP servers from other plugins.

NotFair

NotFair

MCP

Ships with notfair: Open-source SEO, GEO, and marketing skills for AI agents. The NotFair Plugin gives Claude Code, Codex,…

notfair2d4.1k
@nowork-studio@nowork-studioInstall MCP
NotFair

NotFair

MCP

Ships with notfair: Open-source SEO, GEO, and marketing skills for AI agents. The NotFair Plugin gives Claude Code, Codex,…

notfair3d4.1k
@nowork-studio@nowork-studioInstall MCP
medialyst

medialyst

MCP

Ships with newsjack: The open-source skills that turn your agent into a full PR team. Install once. Your agent — Claude Code,…

newsjack2w1.7k
@elvisun@elvisunInstall MCP

Questions about citation-intelligence.

Which coding agents can use citation-intelligence?
citation-intelligence works in any agent that reads an MCP config file: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf. Each agent reads it from its own file; this page names the file for each one.
How do I add citation-intelligence to Claude Code?
Run this in your terminal: claude mcp add citation-intelligence -- npx -y @automatelab/citation-intelligence
Is citation-intelligence safe to install?
Low risk. Signals from public registries, not an audit.