Skip to main content
Glama
AutomateLab-tech

Citation Intelligence MCP

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.

Related MCP server: openresearch-mcp

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

Tool

Purpose

citations_provenance

Recommended first tool. Fan a query across engines; per-URL cross-engine consensus matrix. Returns interpretation_note per engine.

citations_check

URLs cited by Perplexity / Claude / ChatGPT / Gemini / Google AI Mode for a query; or web rank via bing_serp / brave_serp

citations_evidence

Extract the cited snippet from raw_answer for each citation (why, not just that)

citations_predict

Citation likelihood from public signals - no LLM fired

citations_trend

Time-series report of citation rate + per-query gained/lost deltas

citations_freshness

Recency score (halflife=365d) for the pages an engine cites

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

Tool

Purpose

domain_am_i_cited

Domain 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_for

Queries the domain has been cited for, from local cache

domain_cited_for_diff

Diff of domain_cited_for between two time windows for a domain

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

Tool

Purpose

signals_ai_overview

Google AI Overview presence + cited sources

signals_wikipedia

List Wikipedia articles referencing a domain (zero keys)

signals_gsc_gap

Join Google Search Console performance with AI citation status

signals_answer_box

Bin each citation's first mention in raw_answer into early/middle/late thirds

panel_* — saved query panels (editorial watchlists)

Tool

Purpose

panel_track

Save / load / list named query panels (editorial watchlists)

panel_run

Run a panel through domain_am_i_cited and snapshot to disk

report_* — turnkey reporting artifacts

Tool

Purpose

report_visibility

One-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

Tool

Purpose

competitors_canonical_set

Top cited domains per query, aggregated across engines

competitors_compete

End-to-end competitive snapshot: your URL vs top cited competitors

competitors_compare

Side-by-side citations_predict across 2-10 URLs

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

Tool

Purpose

audit_schema

Deep schema.org validation - required fields per @type, malformed JSON-LD

audit_structured_data

Repair-oriented schema.org diagnostics + suggested patches

audit_crawler_access

Verify GPTBot / ClaudeBot / PerplexityBot / CCBot / Google-Extended etc. can fetch a URL

audit_sitemap

Bulk citations_predict across every URL in a sitemap, worst-first

audit_sitemap_map

Cross-reference sitemap URLs with cached citations (inverse of audit_sitemap)

audit_llms_txt

Generate 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.

Surface

Engines

What it means

consumer_scrape

perplexity, google_ai_mode

Proxied through a real consumer-facing AI search product. Closest to what your users see.

api_proxy

claude, openai, gemini

API 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_rank

bing_serp, brave_serp

Traditional web search rank (not LLM citation). Measures whether a URL appears in SERP results, not whether an LLM cites it.

static_signal

citations_predict, signals_wikipedia

Offline 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

Var

Purpose

Free tier?

PERPLEXITY_API_KEY

citations_check (perplexity — consumer_scrape)

Yes

SERPAPI_KEY

signals_ai_overview + citations_check (google_ai_mode — consumer_scrape)

100/month free

ANTHROPIC_API_KEY

citations_check (claude — api_proxy)

Paid only

OPENAI_API_KEY

citations_check (openai — api_proxy)

Paid only

GEMINI_API_KEY

citations_check (gemini — api_proxy)

Yes

BING_API_KEY

citations_check (bing_serp — web_rank)

Yes

BRAVE_API_KEY

citations_check (brave_serp — web_rank)

Yes (2000/month)

CITATION_CACHE_TTL_DAYS

Cache TTL for citations_check entries (default 7)

n/a

CITATION_AI_OVERVIEW_TTL_DAYS

Cache TTL for signals_ai_overview entries (default 1)

n/a

CITATION_CONFIG_DIR

Override config dir (default ~/.config/citation-intelligence)

n/a

Example: am I cited?

You: For the queries "best AI citation tracker", "MCP for AI search", "self-hosted GEO tool",
     is automatelab.tech cited?

(agent invokes `domain_am_i_cited`)

Result:
{
  "domain": "automatelab.tech",
  "engine": "perplexity",
  "results": [
    { "query": "best AI citation tracker",   "cited": true,  "rank": 4 },
    { "query": "MCP for AI search",          "cited": true,  "rank": 1 },
    { "query": "self-hosted GEO tool",       "cited": false, "matching_urls": [] }
  ],
  "summary": {
    "queries_total": 3,
    "queries_cited": 2,
    "citation_rate": 0.67,
    "average_rank": 2.5
  }
}

Example: predict citation likelihood (no key required)

You: How likely is https://example.com/blog/post to be cited by AI?

(agent invokes `citations_predict`)

Result:
{
  "url": "https://example.com/blog/post",
  "score": 62,
  "grade": "C",
  "signals": {
    "wikipedia_linked": false,
    "github_referenced": false,
    "reddit_referenced": true,
    "llms_txt_present": true,
    "https": true,
    "has_article_schema": true,
    "has_faq_schema": false,
    "has_breadcrumb_schema": true,
    "canonical_clean": true,
    "word_count": 1850,
    "reading_time_minutes": 8,
    "h2_count": 7,
    "h2_question_count": 1,
    "authority_link_count": 2,
    "external_link_count": 6,
    "internal_link_count": 11,
    "last_modified_days_ago": 42,
    "has_open_graph": true
  },
  "fixes": [
    { "signal": "has_faq_schema", "suggestion": "Page already has question-style H2s. Wrap them in FAQPage JSON-LD - high-leverage win.", "estimated_lift": "high" },
    { "signal": "h2_question_count", "suggestion": "Reframe at least 2 H2s as questions users actually ask...", "estimated_lift": "medium" }
  ]
}

The Wikipedia signal is measured (it correlates with citation) but no "go get a Wikipedia article" suggestion is emitted - the advice would be non-actionable. Scoring is split across six buckets - domain authority, structured data, content depth, link graph, freshness, metadata - so a thin page and a deep page on the same domain get meaningfully different scores.


Workflow recipes

Concrete patterns that compose the 26 tools into something useful. Costs assume ChatGPT or Perplexity at ~$0.01-0.03/query.

1. Weekly citation tracker

The single highest-ROI pattern. Pick 20-30 queries from your editorial backlog, snapshot weekly, watch the rate trend.

# One-time setup
panel_track name="editorial-watchlist" domain="example.com" action="save"
            queries=["best widget tutorial", "how to set up X", ...]

# Weekly cron (5 min, ~$0.20-0.60 per run)
panel_run name="editorial-watchlist"

# Anytime
citations_trend panel="editorial-watchlist"

citations_trend returns per-query deltas: which queries flipped from cited: false to cited: true since the first snapshot. That's your real editorial-impact metric.

2. Pre-publish gate

Before publishing a post, find out who owns the citation slot and whether the slot is worth competing for.

# 1. Is there an AI Overview to compete for?
signals_ai_overview query="<target query>"

# 2. Who is cited today?
citations_check query="<target query>"

# 3. After publish + 14 days: did the post break in?
domain_am_i_cited domain="example.com" queries=["<target query>"]

If citations_check returns 5+ strong incumbents on a low-volume query, pick a different angle. If ai_overview_present: false, the query has no AI surface - reconsider.

3. Bulk site audit

Catch site-wide structural issues across every page in one pass. Zero API spend.

audit_sitemap sitemap_url="https://example.com/sitemap.xml" limit=200

Returns worst_first sorted by citation-likelihood score. Surfaces missing schema, conflicting canonicals, missing /llms.txt, broken HTTPS.

4. Competitor signal gap

You're not cited; they are. Why?

# 1. Find the top-cited URLs for your target query
citations_check query="<query>"

# 2. Compare your URL to theirs signal-by-signal
competitors_compare urls=[
  "https://example.com/your-post",
  "https://competitor-1.com/their-post",
  "https://competitor-2.com/their-post"
]

diverging_signals is the list of where you're losing. Usually obvious once you see it - they have FAQ schema, GitHub references, Wikipedia links - you don't.

5. Google-rank vs AI-citation gap

The closest editorial wins are queries where you already rank in Google's top 10 but are invisible to AI. Requires a GCP service account with webmasters.readonly scope.

signals_gsc_gap
  domain="example.com"
  queries=["...editorial watchlist..."]
  start_date="2026-04-01"
  end_date="2026-05-01"

closest_wins returns queries with position <= 10 and ai_cited: false, sorted by impressions desc. Push citation signals on those specific URLs first.

6. Wikipedia mention monitor

Wikipedia is the top-correlation signal but the advice "get on Wikipedia" is useless. So instead: watch when it happens organically.

signals_wikipedia domain="example.com" limit=50

Returns Wikipedia article URLs that already link to the domain. Re-run quarterly; the diff is your "we got a Wikipedia citation" alert.

Schema.org

{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Citation Intelligence MCP",
  "applicationCategory": "DeveloperApplication",
  "operatingSystem": "Cross-platform",
  "description": "Self-hosted MCP server for querying AI citation data from Perplexity, Claude, ChatGPT, Gemini, Bing, and Google AI Overviews.",
  "offers": { "@type": "Offer", "price": "0" },
  "url": "https://github.com/AutomateLab-tech/citation-intelligence"
}

Contributing

Bug reports, feature ideas, and PRs welcome. See CONTRIBUTING.md.

Security

Report a vulnerability via SECURITY.md.

License

MIT - see LICENSE.

Built by automatelab.tech

Available Tools

24 tools
ai_overviewA

Check whether Google shows an AI Overview for a query, and which URLs it cites. Uses SerpAPI (free tier: 100/month). Set SERPAPI_KEY.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query to check for Google AI Overview.
locationNoLocation string, e.g. 'United States'. Affects AI Overview eligibility.
hlNoLanguage code, default 'en'.en

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses the use of SerpAPI, the free tier quota, and the need to set SERPAPI_KEY. It also notes that location affects eligibility. Without annotations, this covers key behavioral aspects, though rate limiting and error handling are not mentioned.

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?

The description consists of three concise sentences that front-load the purpose, followed by dependency and setup info. No wasted words.

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?

For a simple check tool with no output schema and no annotations, the description adequately covers purpose, external service, key parameter effect, and setup. It is complete given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has complete descriptions for all three parameters (100% coverage). The description adds value by noting that location affects AI Overview eligibility, which is not in the schema.

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 clearly states the verb 'check' and the resource 'AI Overview', and specifies the output 'which URLs it cites'. The purpose is distinct from sibling tools like 'am_i_cited' which check citations differently.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the SerpAPI dependency and free tier limit, which informs usage constraints. However, it does not provide explicit guidance on when to use this tool versus siblings or when not to use it.

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

am_i_citedA

Check whether a domain is cited by an AI engine across a cluster of queries. Returns per-query presence, rank, and a citation-rate summary. Use to measure visibility for a brand, product, or content site in AI search.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to check, e.g. 'automatelab.tech' (without protocol).
queriesYesQueries to test the domain against. 1-20 queries per call.
engineNoLLM engine to check for citations. 'auto' runs all available LLM engines and returns per-engine breakdown + cross-engine consensus. Pin to a specific engine to reduce cost. 'bing_serp' and 'brave_serp' measure web rank, not LLM citations — use check_citations for those.auto

TDQS

A4.4/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It mentions cost implications and auto behavior, but lacks disclosure on rate limits, quotas, or idempotency. A moderate score as it adds some behavioral context.

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?

Two succinct sentences with clear front-loading of purpose. Every sentence adds value, and no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (3 params, no output schema), the description covers purpose, usage, and parameter nuances adequately. It mentions output structure (per-query presence, rank, summary) but could elaborate on response format. Minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining the 'auto' engine behavior and clarifying that 'bing_serp'/'brave_serp' measure web rank, not LLM citations. This goes beyond schema.

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 clearly states the tool checks if a domain is cited by AI engines across queries, returning per-query presence, rank, and citation-rate summary. It distinguishes from sibling 'check_citations' by referencing it in the engine parameter.

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?

The description provides explicit usage: 'Use to measure visibility for a brand, product, or content site in AI search.' It also advises pinning to a specific engine to reduce cost and directs web rank queries to 'check_citations'.

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

answer_box_positionA

Locate where each cited URL appears in the AI's raw answer text. Calls check_citations, finds the first mention of each citation's URL (or hostname) in raw_answer, and bins by char position into early/middle/late thirds. Surfaces whether your URL is cited up-front or buried near the end. Returns 'unknown' for engines without raw_answer (Bing, Brave).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query whose AI answer to measure citation positions on.
engineNoAI engine to query. web_rank engines (bing_serp, brave_serp) lack raw_answer and will return position 'unknown'.auto
max_resultsNoMax citations to locate.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses the tool's behavior: it calls check_citations, bins positions into early/middle/late thirds, and returns 'unknown' for certain engines. This is complete and transparent.

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?

The description is three concise sentences, each earning its place: first states the action, second explains the mechanism, third notes an edge case. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool does, how it works, and when it returns 'unknown'. It lacks explicit output format details (e.g., per-citation position), but the overall picture is sufficient for an agent to decide when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, the description adds context: it explains how each parameter is used (e.g., engine's effect on output, max_results limits citations), enhancing understanding beyond the schema.

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 provides a specific verb ('Locate') and resource ('where each cited URL appears'), clearly distinguishing the tool's purpose from siblings like check_citations by explaining how it bins positions into thirds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly guides usage by noting that engines without raw_answer (Bing, Brave) return 'unknown', advising against use in those cases. However, it does not explicitly compare to alternatives like directly using check_citations.

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

audit_sitemapA

Fetch a sitemap.xml (or sitemap index) and run predict_citation on every URL. Returns results sorted worst-score-first. Surfaces systemic issues across a whole site in one pass. Zero engine keys needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
sitemap_urlYesURL of sitemap.xml (or a sitemap index). Nested sitemaps are followed.
limitNoMax URLs to score. Sitemap is sliced after parsing.
concurrencyNoParallel predict_citation calls. Higher is faster but more rate-limit risk.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses fetching sitemap, running predict_citation, sorting, and that no engine keys are needed. It hints at rate-limit risk via the concurrency parameter description but does not detail error handling or performance guarantees.

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?

Two sentences, no wasted words. The first sentence captures the core action, the second adds sort order and value proposition. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not specify the output format (e.g., array of objects with URL and citation score) despite no output schema. It mentions sorting but lacks details on structure. For a tool that wraps predict_citation, the return is likely consistent, but this is not explicit.

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?

All three parameters have descriptions in the schema (100% coverage). The description adds valuable context: for sitemap_url it clarifies nested sitemaps are followed, for limit it explains slicing, and for concurrency it mentions parallel calls and rate-limit risk. This goes well beyond the schema.

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 clearly states the tool fetches a sitemap and runs predict_citation on each URL, returning results sorted worst-first. It distinguishes from sibling tools by emphasizing whole-site systemic issue detection, unlike single-URL tools like predict_citation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for whole-site audits and notes 'Zero engine keys needed' as a prerequisite. It does not explicitly state when not to use it or name alternatives, but the context of batch processing is clear.

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

canonical_competitor_setA

Fan a query across engines and aggregate citations by registered domain (not URL). Returns top competitor domains ranked by cross-engine consensus, with per-engine breakdown and top URLs per domain. Use to identify the canonical competitor set for a query - the domains every engine treats as authoritative.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query to fan out across engines.
enginesNoEngines to query. If omitted, uses all LLM engines with a configured API key (google_ai_mode, perplexity, claude, openai, gemini). Include bing_serp/brave_serp only for web_rank comparison.
top_nNoMax competitor domains to return.
max_resultsNoMax citations per engine.
exclude_domainsNoDomains to filter out (e.g. your own brand, Wikipedia, Reddit). Suffix-match.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, description carries full burden. It explains the aggregation by registered domain, per-engine breakdown, and top URLs. Missing details like error handling or rate limits, but core behavior is well disclosed.

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?

Three sentences with clear front-loading: action first, then outcome, then usage. No redundant or vague language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, description adequately covers input, process, and output. Mentions output includes top domains, per-engine breakdown, and top URLs. Could specify ranking metric or confidence indicators, but sufficient for selection and use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description does not add parameter-specific details beyond schema; e.g., 'aggregate citations by registered domain' clarifies output behavior rather than parameters. Schema descriptions are already thorough.

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?

Description clearly states the tool fans a query across engines, aggregates citations by registered domain, and returns top competitor domains with cross-engine consensus. It distinguishes from siblings like 'compare_domains' by focusing on registered domain aggregation and consensus ranking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use to identify the canonical competitor set for a query - the domains every engine treats as authoritative.' Provides clear context but does not explicitly state when not to use or list alternatives among sibling tools.

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

check_citationsA

Return URLs cited by an AI engine (Perplexity, Claude, ChatGPT, Gemini, or Bing) for a query. Use this when an agent or user wants to see what sources an AI search engine grounds answers on. Requires at least one engine API key; auto-picks the first available.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query to test (what would a user ask an AI?)
engineNoEngine to query. • perplexity / google_ai_mode — consumer_scrape: closest to real product behavior. • claude / openai / gemini — api_proxy: API-tier call, may differ from consumer product. • bing_serp / brave_serp — web_rank: traditional SERP rank, NOT LLM citation. 'auto' prefers SerpAPI (google_ai_mode) → Perplexity → LLM adapters → web_rank.auto
max_resultsNoMaximum citations to return.
perplexity_modelNoPerplexity model override (e.g. 'sonar', 'sonar-pro', 'sonar-reasoning'). Only used when engine='perplexity'. Defaults to 'sonar-pro'.

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, description carries full burden. It discloses auto-pick engine behavior and differences between engine types (consumer_scrape, api_proxy, web_rank) via the engine parameter description. However, it lacks mention of rate limits or failure modes.

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?

Two concise sentences that front-load the purpose and usage context. No extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description hints at returning a list of URLs. For a tool with engine selection logic and 4 params, it provides sufficient context, though explicit output structure would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The tool description adds value by explaining the API key requirement and when to use, but parameter details are fully covered in the schema.

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 clearly states the tool returns URLs cited by AI engines for a query, using a specific verb and resource. It distinguishes from sibling tools like 'citation_evidence' or 'citation_provenance' by focusing on AI search engine sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use ('when agent or user wants to see sources an AI search engine grounds answers on') and mentions the API key prerequisite. Does not explicitly list alternative tools but context is clear.

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

citation_evidenceA

Extract the cited snippet from the AI engine's raw answer for each citation. Calls check_citations, then for each returned URL finds the first mention in raw_answer and returns a context window plus the nearest quoted span or containing sentence. Use to see why an engine cited a URL, not just that it did. Returns 'not found' for engines without raw_answer (Bing, Brave).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query whose AI answer to extract citation evidence from.
engineNoAI engine to query. web_rank engines (bing_serp, brave_serp) lack raw_answer and return no evidence.auto
max_resultsNoMax citations to extract evidence for.
context_charsNoHalf-width of the snippet window around each citation mention (chars). Total snippet is up to 2x this.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations, but description fully discloses behavior: calls check_citations, finds first mention in raw_answer, returns context window plus nearest quoted span or sentence, and returns 'not found' for engines without raw_answer. No contradictory or hidden behavior.

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?

Four sentences, front-loaded with purpose, each sentence adds unique value: action, process, usage guidance, edge case. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description adequately explains input behavior and return types (context window, quoted span, 'not found'). Could be more explicit about output structure, but sufficient for an extraction tool with clear process.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all 4 params described in schema). Description adds workflow context (how params are used) and clarifies engine-specific behavior (web_rank engines lack raw_answer), but overall value added is moderate beyond the schema.

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?

Description states specific verb 'Extract' and resource 'cited snippet' and distinguishes from sibling check_citations by explaining 'use to see why an engine cited a URL, not just that it did.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use to see why an engine cited a URL, not just that it did' and warns about engines without raw_answer (Bing, Brave). Could be more explicit about when not to use, but provides clear context relative to siblings.

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

citation_freshness_scoreA

Score how recent the pages cited for a query are. Calls check_citations, then collects dateModified for each cited URL, returns a 0-100 recency_score (halflife=365d) plus per-URL freshness bucket (fresh/current/stale/ancient/unknown). Surfaces queries where AI cites old content - opportunity to ship fresher.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query whose cited URLs to score for freshness.
engineNoAI engine to query for the citation set.auto
max_resultsNoHow many cited URLs to inspect.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but description discloses it calls check_citations, collects dateModified, computes a recency score with halflife=365d, and returns per-URL buckets. This is adequate behavioral context for a read-only analysis tool.

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?

Three concise sentences: first defines core action, second adds technical detail, third gives use case. Front-loaded with purpose; no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 params and no output schema, the description sufficiently explains input, process (calling another tool, collecting data), and output (score 0-100, buckets). Missing explicit bucket thresholds but still functional for agent selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of 3 parameters with descriptions. The description adds process context but does not supplement parameter meaning (e.g., engine enum, max_results cap) beyond what schema already provides.

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?

Description uses specific verb 'score' and resource 'recently of pages cited for a query', clearly distinguishing from siblings like check_citations (which likely just retrieves citations) and other citation analysis tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the value proposition ('surfaces queries where AI cites old content') and implies the tool is for freshness analysis, but does not explicitly list when not to use or contrast with alternatives.

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

citation_provenanceA

Fan a query out across multiple AI engines and report per-URL cross-engine consensus. Returns each unique cited URL with the list of engines that cited it, plus a consensus_urls list (URLs cited by ALL engines). High engine_count = strong cross-engine citation signal; engine_count=1 = engine-specific.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query to fan out across multiple engines.
enginesNoEngines to query. If omitted, uses all LLM engines with a configured API key (perplexity, claude, openai, gemini, google_ai_mode). Include bing_serp/brave_serp only when you explicitly want web_rank comparison.
max_resultsNoMax citations per engine.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully bears the burden: it explains multiple engine queries, output structure per URL, consensus_urls as URLs cited by all engines, and how to interpret engine_count (high=strong, 1=engine-specific). No behavioral surprises.

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?

Two sentences, front-loaded with purpose, no filler. Every word contributes meaning, making it efficient and easy to parse.

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?

No output schema, but description fully explains return structure (list of URLs with engines, consensus_urls) and interpretation. Covers all necessary context for an agent to invoke and understand results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds value: explains default engines (all LLM with keys) and when to include bing/brave serp, plus default and role of max_results. This goes beyond schema definitions.

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 clearly states the tool fans out a query across multiple AI engines and reports per-URL cross-engine consensus, directly distinguishing it from sibling tools like check_citations (single citation check) or citation_evidence (evidence gathering).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (need cross-engine consensus) and explains output interpretation. However, it doesn't explicitly list alternatives or when not to use, though sibling context and description hint at differentiation.

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

citation_trendB

Report citation rate over time for a panel from stored snapshots. Returns the series of citation_rate per snapshot plus per-query deltas (gained/lost/unchanged) between first and last snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYesPanel name to report on.
sinceNoISO date floor, e.g. '2026-01-01'. Only include snapshots on or after.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It only describes the output (series and deltas) but does not state whether the tool is read-only, requires specific permissions, or has any side effects. The mutation or safety profile is not addressed.

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?

The description is two sentences, front-loaded with the core action and output summary. No redundant information. Every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple tool with no output schema, but it lacks details on error handling, default behavior (e.g., if no snapshots exist), and the exact structure of the returned data (e.g., format of the series and deltas). Given zero behavioral annotations and no output schema, more completeness would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. The description adds meaningful context beyond the schema by clarifying that the tool uses 'stored snapshots' and returns a temporal series with deltas, which helps the agent understand the parameter 'since' as a filter on snapshots.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Report' and the resource 'citation rate over time for a panel from stored snapshots.' It specifies the output includes a series of citation_rate per snapshot and per-query deltas. While it does not explicitly differentiate from sibling citation tools, the purpose is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like check_citations or citation_evidence. It does not mention prerequisites, context scenarios, or exclusions. The agent must infer usage from the purpose alone.

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

cited_forA

List queries that the given domain has been cited for, served from the local cache. Build up a corpus by calling check_citations or am_i_cited first; cited_for queries it without spending API budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to look up, e.g. 'automatelab.tech'.
sinceNoISO date floor, e.g. '2026-01-01'. Only return entries fetched on or after this date.
engineNoFilter by engine. Omit to include all.
limitNoMaximum results.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations, so description carries full burden. It discloses cache-based operation and no API cost. However, does not explain behavior when cache is empty or domain missing. Could be more explicit about error cases, but main behavioral trait is clear.

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?

Two sentences: first states purpose and source, second gives usage context. Front-loaded, no wasted words. Efficient communication.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no output schema, and no annotations, the description is mostly complete. It explains tool's niche and when to use. Missing return format or behavior on empty cache, but acceptable for simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no extra parameter-level information beyond what schema provides. No additional context for domain, since, engine, or limit.

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 clearly states the tool lists queries cited for a domain from the local cache. The verb 'list' and resource 'queries cited for domain' are specific. It distinguishes from siblings check_citations and am_i_cited by noting cache usage.

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?

Explicitly instructs to build corpus via check_citations/am_i_cited first, then use cited_for to query cache without spending API budget. Provides clear when-to-use vs alternatives.

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

cited_for_diffA

Diff cited_for between two time windows for a domain. Returns queries gained (cited now, not before baseline_until) and queries lost (cited before, not since current_since). Cache-only, no API spend. Use to track citation drift over time after publishing or migrating content.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to diff, e.g. 'automatelab.tech'.
baseline_untilYesISO date (or ISO datetime). Baseline window = all cache entries fetched on or before this timestamp.
current_sinceNoISO date floor for the 'current' window. Defaults to baseline_until.
engineNoFilter by engine. Omit to include all.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It states 'Cache-only, no API spend,' which is valuable behavioral info. It also explains the meaning of gained/lost queries, adding transparency beyond the schema.

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?

Two sentences with no wasted words. The first sentence immediately states the core function; the second adds context and usage. Ideal brevity for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters and no output schema, the description covers purpose, parameters, behavioral note, and usage. It does not explain the return structure, but that is not required given the lack of output schema. Still comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying how 'baseline_until' and 'current_since' define the two time windows and explaining the 'engine' filter. It slightly exceeds the baseline.

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 uses specific verbs ('diff', 'track citation drift') and clearly defines the resource ('cited_for between two time windows'). It distinguishes from the sibling 'cited_for' by focusing on comparison across time periods.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use to track citation drift over time after publishing or migrating content.' It does not mention when not to use it or provide alternatives, but the context is clear.

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

compare_domainsA

Run predict_citation on 2-10 URLs and return a side-by-side signal table plus a list of signals where the URLs diverge. Use to compare your URL to top-cited competitors for the same query.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesURLs to compare side-by-side. 2-10 URLs. One is typically yours and the rest are cited competitors.

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It describes the operation and output but does not disclose any behavioral traits such as side effects, authentication needs, or rate limits. This is insufficient for a tool with no annotations.

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?

The description is two sentences, front-loads the core functionality, and has no wasted words. It is concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter and no output schema, the description covers input, operation (runs predict_citation), output format, and use case. It is complete enough for an agent to understand when and how to use it, though it assumes knowledge of predict_citation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema description already explains the 'urls' parameter well. The description adds a small nuance ('One is typically yours'), but does not significantly extend the schema's meaning. Baseline 3 is appropriate.

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 clearly states the tool runs predict_citation on 2-10 URLs and returns a side-by-side signal table plus divergence list. It distinguishes from sibling tools like predict_citation (single URL) and compete_for_query (different focus).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use to compare your URL to top-cited competitors for the same query,' providing a clear use case. It does not mention when not to use or list alternatives, but the context is adequate.

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

compete_for_queryA

End-to-end competitive snapshot for a single query. Calls check_citations to get the cited URLs, then runs compare_domains on your_url vs the top cited competitors. Returns your score, the average competitor score, and the gap.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query to test (what would a user ask an AI?).
your_urlYesYour URL to benchmark against the cited competitors.
engineNoAI engine to query for the citation set. 'auto' picks the first available key.auto
max_competitorsNoHow many cited URLs to compare against your_url. Capped at 9 (compare_domains accepts max 10 URLs total including yours).

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description fully covers behavioral traits by explaining the orchestration steps and return values ('your score, the average competitor score, and the gap'), though it omits potential side effects (likely none).

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?

Three succinct sentences front-load the purpose and orchestration, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately explains the tool's function and return values despite no output schema, and accounts for the orchestration of sub-tools, though it could mention that sub-tool behaviors apply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good descriptions; the tool description adds context to parameters by relating them to the workflow (e.g., max_competitors references compare_domains limit) but does not provide significant new meaning beyond what schema offers.

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 clearly states it is an 'End-to-end competitive snapshot for a single query' and outlines the orchestration of check_citations and compare_domains, distinguishing it as a higher-level tool from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the workflow but does not explicitly state when to use this tool versus alternatives like check_citations or compare_domains individually, nor does it provide when-not conditions.

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

crawler_access_auditA

Verify that major AI crawlers (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, CCBot, Google-Extended, Applebot-Extended, Bytespider, Meta-ExternalAgent, plus real-time fetch UAs) can fetch a URL. Parses robots.txt and does a live GET with each bot's User-Agent. Surfaces robots.txt blocks AND UA-based gating that breaks AI citation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPage URL to test for AI crawler access.
botsNoOverride the default bot list. Each entry is a User-Agent token (e.g. 'GPTBot', 'ClaudeBot').
fetch_with_uaNoIf true, do a live GET as each bot's User-Agent and report status. Disable to only parse robots.txt (no extra requests).

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that the tool parses robots.txt and performs live GET requests with each bot's User-Agent, surfacing both robots.txt blocks and UA-based gating. However, it does not mention potential impacts such as rate limits or server log implications.

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?

The description is two sentences, front-loaded with the main purpose, and each sentence provides essential information without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what the tool does but lacks details about the output format or return values. Given the complexity (multiple bots, live fetch) and no output schema, the description should mention what the user can expect as a result (e.g., a list of blocks vs. successful fetches).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds context about the default bot list and the behavioral effect of 'fetch_with_ua' but does not add significant meaning beyond the schema descriptions.

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 clearly states it verifies AI crawler access, lists specific bots, and explains it parses robots.txt and does live GET requests. This differentiates it from siblings like 'check_citations' or 'citation_evidence' which focus on citations, not crawler access.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly tells users to use this tool to verify AI crawler access for a URL. It doesn't explicitly state when not to use or name alternatives, but the context of sibling tools makes it clear this is the appropriate choice for crawler access auditing.

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

gsc_citation_gapA

Join Google Search Console performance with am_i_cited per query. Surfaces queries where the domain ranks well in Google but is not cited in AI - the closest editorial wins. Requires GCP service account creds (credentials_path or GOOGLE_APPLICATION_CREDENTIALS env).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to analyze, e.g. 'automatelab.tech'. Used both for the GSC site URL and the citation check.
queriesYesQueries to cross-reference. 1-20 per call.
site_urlNoOverride the GSC siteUrl. Defaults to 'sc-domain:<domain>'.
start_dateYesISO date for GSC range start, e.g. '2026-04-01'.
end_dateYesISO date for GSC range end, e.g. '2026-05-01'.
engineNoAI engine for the citation check.auto
credentials_pathNoPath to GCP service account JSON. Defaults to env GOOGLE_APPLICATION_CREDENTIALS.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It mentions credential requirements but does not disclose behavioral traits (e.g., idempotency, side effects, rate limits). The word 'join' suggests a read-only operation, but more explicit transparency would improve interpretation.

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?

The description is two sentences, front-loaded with purpose and quickly covering prerequisites. Every word adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should explain return values. It hints at output (queries with gaps) but lacks structure details. For a tool combining two data sources, more output context is needed for complete understanding.

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%, and the description adds valuable context beyond the schema: domain is used for both GSC and citation check, queries are limited to 1-20, and defaults for site_url and engine are noted. This significantly helps an agent understand parameter usage.

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 clearly states the tool 'joins Google Search Console performance with am_i_cited per query' and 'surfaces queries where the domain ranks well in Google but is not cited in AI', distinguishing it from siblings like am_i_cited or check_citations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies a prerequisite ('requires GCP service account creds') and implies the use case (finding citation gaps). It does not explicitly exclude scenarios, but the purpose is clear enough for an agent to decide when to invoke.

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

llms_txt_generatorA

Generate an llms.txt file (https://llmstxt.org spec) from a sitemap. Parses sitemap.xml + nested indexes, groups URLs by top-level path, and emits a Markdown document with H1+description+sectioned link lists. Set fetch_titles=true to pull per URL (slower, richer output).

ParametersJSON Schema
NameRequiredDescriptionDefault
sitemap_urlYesURL of sitemap.xml (or sitemap index). Nested sitemaps are followed.
site_titleYesSite title - top H1 in the generated llms.txt file.
site_descriptionNoOne-paragraph site description placed under the H1. Optional but strongly recommended.
limitNoMax URLs to include. Truncated after sitemap parse, before title fetch.
fetch_titlesNoIf true, fetch each URL to extract <title> for richer links. Slower (one HEAD-ish GET per URL). Default false uses the URL path as the link text.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It explains key behaviors: parsing sitemap.xml and nested indexes, grouping URLs by top-level path, truncating after limit, and the slower title-fetching mode. It does not mention authentication or rate limits, but such details are less critical for a generation tool.

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?

The description is two sentences, front-loaded with the main purpose and process. Every sentence contributes necessary information: the first covers the core functionality, the second explains the key optional parameter's trade-off. No redundancy or filler.

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?

Given the tool has no output schema, the description adequately describes the output format (Markdown with H1, description, sectioned link lists). It covers all parameter interactions, the grouping logic, and the title-fetching behavior. For a tool with 5 parameters, this is complete and leaves no major gaps in understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining the overall process and how parameters like fetch_titles affect behavior. It also clarifies that site_description is optional but recommended, and that limit applies before title fetch.

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 clearly states the tool generates an llms.txt file from a sitemap, specifying the process (parsing, grouping, emitting) and the output format (Markdown with H1, description, sectioned link lists). It distinguishes from sibling tools like audit_sitemap or sitemap_citation_map by its unique function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use: when you have a sitemap URL and want to generate an llms.txt file. It explains the optional fetch_titles flag and its trade-off (slower but richer). However, it does not explicitly mention when not to use this tool or suggest alternatives, though the sibling list implies differentiation.

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

predict_citationA

Score citation likelihood for a URL from public signals (Wikipedia link presence, schema.org markup, /llms.txt, GitHub and Reddit references, canonical hygiene, HTTPS). No LLM fired - all heuristic. Returns 0-100 score, grade, signal breakdown, and ranked fixes.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to score for citation likelihood. Must be absolute http(s).

TDQS

A4.1/5.0
Behavior4/5

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

Explicitly states no LLM is used ('all heuristic'), lists the specific signals checked, and describes the output format (score, grade, breakdown, fixes). No annotations exist, so description carries full burden; it is mostly adequate.

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?

Two sentences: first states purpose and signals, second clarifies method and output. No redundant text, front-loaded with key information.

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?

Despite no output schema, the description fully explains the output (0-100 score, grade, signal breakdown, ranked fixes) and the heuristic approach. All relevant aspects are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'url' is well-documented in the schema (100% coverage). The description adds a list of signals but does not elaborate on the parameter itself beyond what the schema provides.

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?

Clearly states it scores citation likelihood for a URL using public signals. Distinguishes from siblings like 'am_i_cited' (which checks if cited) and 'check_citations' (which verifies existing citations) by focusing on prediction via heuristics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage: use when you want to predict citation potential from web signals. No explicit when-not-to-use or alternatives mentioned, leaving the agent to infer from context.

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

run_panelA

Run a saved panel through am_i_cited and append a timestamped snapshot. Snapshots live under /snapshots//.json. Feeds citation_trend.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPanel name previously saved via track_queries.
domainNoOverride the panel's default domain for this run.
engineNoAI engine to query. Use bing_serp/brave_serp for web_rank comparison only — am_i_cited will refuse them.auto

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses that the tool runs through am_i_cited, appends a snapshot, stores it at a path, and feeds citation_trend. However, it lacks details on error handling, prerequisites (e.g., panel existence), rate limits, or side effects. With no annotations, more behavioral context would be beneficial.

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?

The description is two sentences with no extraneous information. It is front-loaded with the core action and provides additional details on storage and downstream use efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the output is a snapshot file stored in a specific path, but with no output schema, it does not describe the snapshot's contents or format. For a tool that integrates with citation analysis, more detail on the snapshot's structure would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all three parameters with descriptions. The description adds that the 'name' parameter must be a panel saved via track_queries, which is helpful. But for 'domain' and 'engine', it adds no extra meaning beyond the schema. Baseline score of 3 is appropriate given high schema coverage.

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 clearly states the tool runs a saved panel through am_i_cited, appends a timestamped snapshot, and specifies the snapshot storage path. It distinguishes from siblings by naming specific tools it integrates with (am_i_cited, citation_trend).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for running a previously saved panel via track_queries, but does not explicitly state when to use this tool versus alternatives like check_citations or citation_evidence. No when-not-to-use guidance is provided.

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

schema_auditA

Deep schema.org validation for a URL. Parses every JSON-LD block and microdata node, checks required fields per @type (Article needs headline+author+datePublished, FAQPage needs mainEntity, HowTo needs step, etc.), and flags missing fields and malformed JSON-LD. Returns issues list and a valid/invalid verdict. Use to fix structured-data bugs that predict_citation flags but can't explain.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL whose JSON-LD and microdata to validate against schema.org expected fields.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It describes parsing, validation logic per @type, flagging missing fields/malformed JSON, and returns issues list and verdict. Does not mention read-only nature or safety, but validation implies non-destructive behavior.

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?

Three concise sentences that front-load the main purpose, then detail specific checks, and end with usage recommendation. No wasted words.

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?

Describes input (URL), process (parsing and validation), output (issues list and verdict), and provides examples of checks. Since no output schema exists, this explains return values adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'url' with a schema description that matches the description. Schema coverage is 100%, so the description adds minimal extra meaning beyond the schema. Baseline 3 is appropriate.

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 clearly states it performs deep schema.org validation for a URL, parsing all JSON-LD and microdata, and returns issues/verdict. It distinguishes from sibling tools by mentioning it fixes bugs that predict_citation can't explain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use when predict_citation flags bugs but can't explain them, providing clear use case context. Does not explicitly state when not to use, but sibling differentiation implies alternatives.

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

sitemap_citation_mapA

Cross-reference a sitemap with the citation cache. For each sitemap URL, reports whether it appears in cached citations (and how many queries/engines cited it). Inverse of audit_sitemap: not 'how citable is each URL', but 'has each URL actually been cited yet'. Cache must be primed via check_citations or run_panel first.

ParametersJSON Schema
NameRequiredDescriptionDefault
sitemap_urlYesURL of sitemap.xml (or a sitemap index). Nested sitemaps are followed.
domainNoDomain to look up citations for. If omitted, inferred from the sitemap host.
sinceNoISO date floor; only count citations recorded on or after this date.
limitNoMax sitemap URLs to consider.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool follows nested sitemaps, reports citation presence with counts, and requires cache priming. It does not mention idempotency or error conditions, but the core behavior is well covered.

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?

Three sentences, no fluff. The first sentence states purpose, the second differentiates from a sibling, the third gives a crucial prerequisite. Every sentence adds value and the structure is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description partially explains output (reports whether cited and counts). It also mentions dependency on cache priming. The tool is relatively simple; this level of detail is sufficient for an agent to understand when and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (all parameters have descriptions), so the schema already explains each parameter. The description does not add additional semantic context beyond what the schema provides, meeting the baseline expectation.

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?

Clearly states the tool cross-references a sitemap with the citation cache, reporting which URLs have been cited. Distinguishes from audit_sitemap by describing it as the inverse operation. The verb 'cross-reference' and nouns 'sitemap' and 'citation cache' precisely define the resource and action.

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?

Explicitly describes when to use (to check if each sitemap URL has been cited), contrasts with audit_sitemap, and provides a prerequisite: cache must be primed via check_citations or run_panel first. This helps the agent select the right tool and prepare needed state.

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

structured_data_repairA

Suggest missing JSON-LD additions for a URL. Fetches the page, detects existing schema types, and returns ready-to-paste templates for types that are missing but signalled by page content (BlogPosting from og:type=article or bylines, FAQPage from Q&A pairs, HowTo from numbered steps, BreadcrumbList from nested paths, Organization on homepages). Templates are pre-filled from page metadata where possible; fields marked FILL: require manual completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to inspect for missing JSON-LD. The page is fetched and its content signals are used to suggest schema types.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavior: fetches page, detects schema, returns ready-to-paste templates, pre-fills from metadata, and flags manual fields. It does not mention any side effects or limitations, but covers key behavioral aspects.

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?

The description is concise (5 sentences) with no wasted words. The main purpose is stated first, followed by process details, examples, and output format. Efficient and front-loaded.

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?

Given a simple input and no output schema, the description covers everything: input, process, output (templates), and example triggers. It is fully sufficient for an agent to understand and use the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'url' is described with more detail than the schema alone: 'The page is fetched and its content signals are used to suggest schema types.' This adds value beyond the schema's basic description.

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 clearly states the action ('Suggest missing JSON-LD additions') and the resource ('for a URL'). It distinguishes from sibling tools like schema_audit by focusing on adding missing types rather than auditing existing ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on when to use (when missing JSON-LD is suspected) and lists example scenarios (BlogPosting, FAQPage, etc.). However, it does not explicitly state when not to use or directly compare to alternatives, though the sibling list is provided.

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

track_queriesA

Save, load, or list named query panels. A panel is a persisted set of queries you want to monitor over time (e.g. editorial-watchlist). Use action=save with queries[] to create, action=load to read, action=list to enumerate. Panels live under /panels/.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPanel name, e.g. 'editorial-watchlist'. Used to save and recall the query set.
queriesNoQueries to save under this panel. Omit to read the existing panel.
domainNoDefault domain to track for this panel, e.g. 'automatelab.tech'.
actionNo'save' writes the panel, 'load' returns an existing panel, 'list' enumerates all panels.save

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that panels are persisted under a specific file path, implying stateful behavior. However, it does not explain if save overwrites, if there are any destructive side effects, or any auth/rate limit info.

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?

The description is three concise sentences with no wasted words. The first sentence states the core purpose, the second gives usage guidance, and the third adds storage context. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 parameters, 3 actions, no output schema. The description covers all actions, gives example, explains persistence. It doesn't describe return values for load/list, but the actions imply it returns queries. Could mention that load returns a panel object, but it's sufficient for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the relationship between action and queries parameters, and gives a concrete example ('editorial-watchlist') and the storage location, which goes beyond schema descriptions.

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 clearly states the tool saves, loads, or lists named query panels, using specific verbs and resources. It distinguishes from siblings by focusing on panel management, which is unique among the listed tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to use each action (save, load, list) and provides context for why you'd use panels (monitor queries over time). It does not explicitly say when not to use, but the actions are self-explanatory.

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

wikipedia_mentionsA

List Wikipedia articles that reference the given domain. Wikipedia citation is the highest-lift signal for LLM training corpora. Zero keys required.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to search for, e.g. 'automatelab.tech' (without protocol).
limitNoMaximum mention rows to return.
langNoWikipedia language subdomain, e.g. 'en', 'de', 'fr'.en

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only adds 'Zero keys required' beyond the schema. It does not mention rate limits, pagination behavior, error handling, or what happens if the domain has no mentions. This is insufficient for a tool with no annotations.

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?

The description is two sentences, front-loading the core purpose in the first sentence. The second sentence adds context about the signal's importance and access. No redundant or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the agent does not know what fields are returned (e.g., article titles, URLs). The description only says 'list Wikipedia articles', leaving ambiguity. Parameter details are well-covered by the schema, but the output format is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The tool description adds no additional meaning beyond what the schema already provides for each parameter (domain, limit, lang).

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 clearly states the verb 'list', the resource 'Wikipedia articles', and the scope 'that reference the given domain'. The additional context about being a 'highest-lift signal' provides useful rationale, and the tool is distinct from siblings like 'check_citations' or 'citation_evidence'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for assessing citation importance via the 'highest-lift signal' line, but it does not explicitly state when to use this tool over alternatives, nor does it mention when not to use it. No exclusions or alternatives are provided.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 24 tool updatesv0.1.0
    • First observedai_overview
    • First observedam_i_cited
    • First observedanswer_box_position
    • First observedaudit_sitemap
    • First observedcanonical_competitor_set
    • First observedcheck_citations
    • First observedcitation_evidence
    • First observedcitation_freshness_score
    • First observedcitation_provenance
    • First observedcitation_trend
    • First observedcited_for
    • First observedcited_for_diff
    • First observedcompare_domains
    • First observedcompete_for_query
    • First observedcrawler_access_audit
    • First observedgsc_citation_gap
    • First observedllms_txt_generator
    • First observedpredict_citation
    • First observedrun_panel
    • First observedschema_audit
    • First observedsitemap_citation_map
    • First observedstructured_data_repair
    • First observedtrack_queries
    • First observedwikipedia_mentions

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a highly specific purpose within the citation intelligence domain. For example, 'check_citations' returns cited URLs, 'citation_evidence' extracts relevant snippets, 'am_i_cited' checks domain presence across queries, and 'predict_citation' scores citation likelihood. Overlaps are minimal and clearly distinguished by function.

Naming Consistency4/5

Most tool names follow a verb_noun or noun_verb pattern with underscores (e.g., 'check_citations', 'audit_sitemap', 'citation_evidence'). However, there are slight inconsistencies such as 'am_i_cited' using a full sentence pattern and 'llms_txt_generator' mixing a file extension. Overall, the naming is clear and predictable.

Tool Count5/5

With 24 tools, the server covers a broad yet focused domain of citation intelligence. Each tool adds distinct value, from basic citation checking to competitive analysis, schema auditing, and trend tracking. The count is well-scoped for comprehensive coverage without unnecessary redundancy.

Completeness5/5

The tool suite provides end-to-end coverage for AI citation intelligence: checking citations, predicting likelihood, auditing crawler access, analyzing sitemaps, tracking trends, and even fixing structured data. Notable integrations like Google Search Console (gsc_citation_gap) and Wikipedia mentions are included. No obvious gaps for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Vendor-agnostic MCP server that audits, scores, and rewrites web pages for AI-citation eligibility. No API keys. No registration. Works in Claude Desktop, Cursor, Cline, Windsurf, VS Code (Copilot / Continue), and any client that speaks the Model Context Protocol.
    20
    100
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Zero-auth multi-source research MCP server that enables web search, reading URLs, PDFs, GitHub repos, and querying Hacker News, Stack Overflow, Semantic Scholar, and YouTube transcripts without API keys.
    10
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server enabling local-first web search, fetch, extract, and caching with citeable excerpts, no API key required. Supports research workflows for agents and apps.
    18
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AutomateLab-tech/citation-intelligence'

If you have feedback or need assistance with the MCP directory API, please join our Discord server