Citation Intelligence MCP
This is a self-hosted Citation Intelligence platform for tracking, analyzing, and improving how AI search engines cite your content. It covers citation lookup, competitive analysis, site auditing, and trend monitoring across Perplexity, Claude, ChatGPT, Gemini, Google AI Mode, and Bing.
Citation Checking & Discovery
Check which URLs are cited by AI engines for any query, including cross-engine consensus and individual engine results
Verify if your domain is cited across a cluster of queries with per-engine breakdowns and citation rate summaries
Extract the actual snippets explaining why a URL was cited, not just that it was
Determine where your URL appears in an AI's answer (early, middle, or late)
Signals & Monitoring
Check if a Google AI Overview exists for a query and which URLs it cites
Identify Wikipedia articles referencing your domain (a key LLM training signal, no API key needed)
Join Google Search Console data with AI citation status to find queries where you rank in Google but are invisible to AI
Score the recency of cited pages to surface opportunities to publish fresher content
Trend Tracking & History
Track citation rate changes over time using saved query panels and snapshot comparisons
Diff citation history between two time windows to see which queries were gained or lost
List all queries a domain has been cited for from local cache (no API spend)
Competitive Analysis
Identify the top-cited competitor domains for any query across multiple engines
Compare your URL's citation signals side-by-side against competitors to pinpoint gaps
Run end-to-end competitive snapshots for a query
Site Auditing
Predict citation likelihood (0–100) for any URL from public signals (schema.org, llms.txt, Wikipedia, GitHub, HTTPS, content depth) — no LLM required
Bulk audit all URLs in a sitemap for citation likelihood, sorted worst-first
Cross-reference sitemap URLs with the citation cache to see which pages have already been cited
Validate schema.org implementation, flag missing or malformed fields, and generate ready-to-paste JSON-LD fixes
Verify AI crawler access (GPTBot, ClaudeBot, PerplexityBot, etc.) via robots.txt and live user-agent checks
Generate an
llms.txtfile from a sitemap to guide AI systems on your site's structure
Privacy: Runs locally, uses your own API keys, caches results locally, and sends no data to third parties.
Performs web rank checks using the Brave Search API.
Uses GitHub as a signal for citation likelihood prediction.
Retrieves Google AI Overview citations via SerpAPI.
Joins Google Search Console performance data with AI citation status for gap analysis.
Integrates with OpenAI's Responses API to retrieve citations from ChatGPT.
Lists Wikipedia articles that mention a given domain.
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.
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 |
| Recommended first tool. Fan a query across engines; per-URL cross-engine consensus matrix. Returns |
| URLs cited by Perplexity / Claude / ChatGPT / Gemini / Google AI Mode for a query; or web rank via bing_serp / brave_serp |
| Extract the cited snippet from |
| Citation likelihood from public signals - no LLM fired |
| Time-series report of citation rate + per-query gained/lost deltas |
| Recency score (halflife=365d) for the pages an engine cites |
domain_* — domain-level: am I cited, what for
Tool | Purpose |
| Domain citation check. With |
| Queries the domain has been cited for, from local cache |
| Diff of |
signals_* — external signals: AI Overview, Wikipedia, GSC, answer-box position
Tool | Purpose |
| Google AI Overview presence + cited sources |
| List Wikipedia articles referencing a domain (zero keys) |
| Join Google Search Console performance with AI citation status |
| Bin each citation's first mention in |
panel_* — saved query panels (editorial watchlists)
Tool | Purpose |
| Save / load / list named query panels (editorial watchlists) |
| Run a panel through |
report_* — turnkey reporting artifacts
Tool | Purpose |
| 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 |
| Top cited domains per query, aggregated across engines |
| End-to-end competitive snapshot: your URL vs top cited competitors |
| Side-by-side |
audit_* — fixable on-page / on-site checks
Tool | Purpose |
| Deep schema.org validation - required fields per |
| Repair-oriented schema.org diagnostics + suggested patches |
| Verify GPTBot / ClaudeBot / PerplexityBot / CCBot / Google-Extended etc. can fetch a URL |
| Bulk |
| Cross-reference sitemap URLs with cached citations (inverse of |
| Generate an |
Prompts
Server-side prompt templates the client can offer end users (call via the MCP prompt list):
audit_citation_readiness(url)- chainscitations_predict+audit_schemaaudit_competitor_snapshot(query, your_url?)- chainscompetitors_canonical_set+competitors_competeaudit_crawler_checkup(url)- runsaudit_crawler_accessand writes a remediation listaudit_gap_analysis(domain, days?)- drivessignals_gsc_gapand suggests next movesaudit_sitemap_coverage(sitemap_url)- runsaudit_sitemap_mapand 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/newestcitation://panels- saved panels + per-panel snapshot countscitation://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 |
|
| Proxied through a real consumer-facing AI search product. Closest to what your users see. |
|
| 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. |
|
| Traditional web search rank (not LLM citation). Measures whether a URL appears in SERP results, not whether an LLM cites it. |
|
| 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-intelligenceRequires 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_predictruns 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? |
|
| Yes |
|
| 100/month free |
|
| Paid only |
|
| Paid only |
|
| Yes |
|
| Yes |
|
| Yes (2000/month) |
| Cache TTL for | n/a |
| Cache TTL for | n/a |
| Override config dir (default | 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=200Returns 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=50Returns 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 toolsai_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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to check for Google AI Overview. | |
| location | No | Location string, e.g. 'United States'. Affects AI Overview eligibility. | |
| hl | No | Language code, default 'en'. | en |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to check, e.g. 'automatelab.tech' (without protocol). | |
| queries | Yes | Queries to test the domain against. 1-20 queries per call. | |
| engine | No | LLM 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
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query whose AI answer to measure citation positions on. | |
| engine | No | AI engine to query. web_rank engines (bing_serp, brave_serp) lack raw_answer and will return position 'unknown'. | auto |
| max_results | No | Max citations to locate. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sitemap_url | Yes | URL of sitemap.xml (or a sitemap index). Nested sitemaps are followed. | |
| limit | No | Max URLs to score. Sitemap is sliced after parsing. | |
| concurrency | No | Parallel predict_citation calls. Higher is faster but more rate-limit risk. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to fan out across engines. | |
| engines | No | Engines 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_n | No | Max competitor domains to return. | |
| max_results | No | Max citations per engine. | |
| exclude_domains | No | Domains to filter out (e.g. your own brand, Wikipedia, Reddit). Suffix-match. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query to test (what would a user ask an AI?) | |
| engine | No | Engine 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_results | No | Maximum citations to return. | |
| perplexity_model | No | Perplexity model override (e.g. 'sonar', 'sonar-pro', 'sonar-reasoning'). Only used when engine='perplexity'. Defaults to 'sonar-pro'. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query whose AI answer to extract citation evidence from. | |
| engine | No | AI engine to query. web_rank engines (bing_serp, brave_serp) lack raw_answer and return no evidence. | auto |
| max_results | No | Max citations to extract evidence for. | |
| context_chars | No | Half-width of the snippet window around each citation mention (chars). Total snippet is up to 2x this. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query whose cited URLs to score for freshness. | |
| engine | No | AI engine to query for the citation set. | auto |
| max_results | No | How many cited URLs to inspect. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to fan out across multiple engines. | |
| engines | No | Engines 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_results | No | Max citations per engine. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | Panel name to report on. | |
| since | No | ISO date floor, e.g. '2026-01-01'. Only include snapshots on or after. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to look up, e.g. 'automatelab.tech'. | |
| since | No | ISO date floor, e.g. '2026-01-01'. Only return entries fetched on or after this date. | |
| engine | No | Filter by engine. Omit to include all. | |
| limit | No | Maximum results. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to diff, e.g. 'automatelab.tech'. | |
| baseline_until | Yes | ISO date (or ISO datetime). Baseline window = all cache entries fetched on or before this timestamp. | |
| current_since | No | ISO date floor for the 'current' window. Defaults to baseline_until. | |
| engine | No | Filter by engine. Omit to include all. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | URLs to compare side-by-side. 2-10 URLs. One is typically yours and the rest are cited competitors. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to test (what would a user ask an AI?). | |
| your_url | Yes | Your URL to benchmark against the cited competitors. | |
| engine | No | AI engine to query for the citation set. 'auto' picks the first available key. | auto |
| max_competitors | No | How many cited URLs to compare against your_url. Capped at 9 (compare_domains accepts max 10 URLs total including yours). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL to test for AI crawler access. | |
| bots | No | Override the default bot list. Each entry is a User-Agent token (e.g. 'GPTBot', 'ClaudeBot'). | |
| fetch_with_ua | No | If true, do a live GET as each bot's User-Agent and report status. Disable to only parse robots.txt (no extra requests). |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to analyze, e.g. 'automatelab.tech'. Used both for the GSC site URL and the citation check. | |
| queries | Yes | Queries to cross-reference. 1-20 per call. | |
| site_url | No | Override the GSC siteUrl. Defaults to 'sc-domain:<domain>'. | |
| start_date | Yes | ISO date for GSC range start, e.g. '2026-04-01'. | |
| end_date | Yes | ISO date for GSC range end, e.g. '2026-05-01'. | |
| engine | No | AI engine for the citation check. | auto |
| credentials_path | No | Path to GCP service account JSON. Defaults to env GOOGLE_APPLICATION_CREDENTIALS. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| sitemap_url | Yes | URL of sitemap.xml (or sitemap index). Nested sitemaps are followed. | |
| site_title | Yes | Site title - top H1 in the generated llms.txt file. | |
| site_description | No | One-paragraph site description placed under the H1. Optional but strongly recommended. | |
| limit | No | Max URLs to include. Truncated after sitemap parse, before title fetch. | |
| fetch_titles | No | If 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to score for citation likelihood. Must be absolute http(s). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Panel name previously saved via track_queries. | |
| domain | No | Override the panel's default domain for this run. | |
| engine | No | AI engine to query. Use bing_serp/brave_serp for web_rank comparison only — am_i_cited will refuse them. | auto |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL whose JSON-LD and microdata to validate against schema.org expected fields. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sitemap_url | Yes | URL of sitemap.xml (or a sitemap index). Nested sitemaps are followed. | |
| domain | No | Domain to look up citations for. If omitted, inferred from the sitemap host. | |
| since | No | ISO date floor; only count citations recorded on or after this date. | |
| limit | No | Max sitemap URLs to consider. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to inspect for missing JSON-LD. The page is fetched and its content signals are used to suggest schema types. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Panel name, e.g. 'editorial-watchlist'. Used to save and recall the query set. | |
| queries | No | Queries to save under this panel. Omit to read the existing panel. | |
| domain | No | Default domain to track for this panel, e.g. 'automatelab.tech'. | |
| action | No | 'save' writes the panel, 'load' returns an existing panel, 'list' enumerates all panels. | save |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to search for, e.g. 'automatelab.tech' (without protocol). | |
| limit | No | Maximum mention rows to return. | |
| lang | No | Wikipedia language subdomain, e.g. 'en', 'de', 'fr'. | en |
TDQS
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.
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.
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.
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.
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.
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.
24 tool updates
v0.1.0- First observed
ai_overview - First observed
am_i_cited - First observed
answer_box_position - First observed
audit_sitemap - First observed
canonical_competitor_set - First observed
check_citations - First observed
citation_evidence - First observed
citation_freshness_score - First observed
citation_provenance - First observed
citation_trend - First observed
cited_for - First observed
cited_for_diff - First observed
compare_domains - First observed
compete_for_query - First observed
crawler_access_audit - First observed
gsc_citation_gap - First observed
llms_txt_generator - First observed
predict_citation - First observed
run_panel - First observed
schema_audit - First observed
sitemap_citation_map - First observed
structured_data_repair - First observed
track_queries - First observed
wikipedia_mentions
TDQS
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.
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.
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.
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
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
Free OpenAI-compatible inference with signed provenance receipts and 3 focused MCP tools.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseAqualityCmaintenanceVendor-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.201003MIT
- AlicenseNot gradedqualityAmaintenanceZero-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.10Apache 2.0
- AlicenseAqualityAmaintenanceAI visibility tracker MCP server. Track brand citations across ChatGPT, Claude, Perplexity, Gemini & Google AI Overviews. Self-host on Cloudflare Workers. GEO/AEO.293044MIT
- AlicenseNot gradedqualityBmaintenanceMCP server enabling local-first web search, fetch, extract, and caching with citeable excerpts, no API key required. Supports research workflows for agents and apps.18MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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