Citation Intelligence
NPM · @AUTOMATELAB/CITATION-INTELLIGENCE · SCANNED AUG 3
Check what Perplexity, Claude, ChatGPT, Gemini, and Google AI Overviews cite for any query.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security70
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects undici 7.25.0, a direct dependency. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (140 of 145), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 55 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability83
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4378 tokens (~145/item across 30 items; 26 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @automatelab/citation-intelligence
claude mcp add automatelab-tech-citation-intelligence -- npx -y @automatelab/citation-intelligence
codex mcp add automatelab-tech-citation-intelligence -- npx -y @automatelab/citation-intelligence
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"automatelab-tech-citation-intelligence": {
"type": "local",
"command": [
"npx",
"-y",
"@automatelab/citation-intelligence"
],
"enabled": true
}
}
} openclaw mcp add automatelab-tech-citation-intelligence --command npx --arg -y --arg @automatelab/citation-intelligence
mcp_servers:
automatelab-tech-citation-intelligence:
command: "npx"
args: ["-y", "@automatelab/citation-intelligence"] {
"mcpServers": {
"automatelab-tech-citation-intelligence": {
"command": "npx",
"args": [
"-y",
"@automatelab/citation-intelligence"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +4
- Stability: unverified → 0.27 ▲ functional
- 2 Aug 26 +37
- GHSA-frvp-7c67-39w9 affects this package: high ▼ security
- CVE-2026-6733 affects this package: high ▼ security
- CVE-2026-12151 affects this package: high ▼ security
- CVE-2026-9697 affects this package: high ▼ security
- CVE-2026-9678 affects this package: high ▼ security
- CVE-2026-6734 affects this package: high ▼ security
- CVE-2026-41907 affects this package: high ▼ security
- CVE-2026-11525 affects this package: high ▼ security
- CVE-2026-9679 affects this package: high ▼ security
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → fail ▼ security
- Install scripts: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Schema quality: unverified → excellent ▲ functional
- License: unverified → pass ▲ functional
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Licence: MIT functional
- 31 Jul 26 +19
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −45
- Malware scan: pass → unverified ▼ security
- Schema quality: 100 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- 27 Jul 26 51
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/@automatelab/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Vulnerabilities 9 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-frvp-7c67-39w9 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N | yes | |
| GHSA-35p6-xmwp-9g52 | CVE-2026-6733 | low | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N | yes |
| GHSA-g8m3-5g58-fq7m | CVE-2026-11525 | low | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N | yes |
| GHSA-hm92-r4w5-c3mj | CVE-2026-6734 | high | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H | yes |
| GHSA-p88m-4jfj-68fv | CVE-2026-9679 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N | yes |
| GHSA-pr7r-676h-xcf6 | CVE-2026-9678 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N | yes |
| GHSA-vmh5-mc38-953g | CVE-2026-9697 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-vxpw-j846-p89q | CVE-2026-12151 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-w5hq-g745-h8pq | CVE-2026-41907 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N | yes |
Dependencies 140 packages
140 packages in the resolved dependency tree · 140 deprecated · 40 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
audit_crawler_access ~180
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 | Type | Req | Description |
|---|---|---|---|
| bots | array | — | Override the default bot list. Each entry is a User-Agent token (e.g. 'GPTBot', 'ClaudeBot'). |
| fetch_with_ua | boolean | — | If true, do a live GET as each bot's User-Agent and report status. Disable to only parse robots.txt (no extra requests). |
| url | string | yes | Page URL to test for AI crawler access. |
| Name | Type | Req | Description |
|---|---|---|---|
| bots | array | yes | Per-bot access verdict combining robots.txt + live UA test. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| note | string | — | — |
| robots_error | string|null | yes | Error message if robots.txt fetch failed. |
| robots_present | boolean | yes | Whether a non-empty robots.txt was found. |
| robots_status | number|null | yes | HTTP status of the robots.txt fetch. |
| robots_url | string | yes | robots.txt URL that was parsed. |
| summary | object | yes | — |
| url | string | yes | The URL that was audited. |
No examples provided.
audit_llms_txt ~208
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 <title> per URL (slower, richer output).
| Name | Type | Req | Description |
|---|---|---|---|
| fetch_titles | boolean | — | 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. |
| limit | integer | — | Max URLs to include. Truncated after sitemap parse, before title fetch. |
| site_description | string | — | One-paragraph site description placed under the H1. Optional but strongly recommended. |
| site_title | string | yes | Site title - top H1 in the generated llms.txt file. |
| sitemap_url | string | yes | URL of sitemap.xml (or sitemap index). Nested sitemaps are followed. |
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Generated llms.txt file content; save to /llms.txt at site root. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| note | string | — | — |
| sections | number | yes | Number of top-level sections in the generated file. |
| sitemap_url | string | yes | Sitemap URL that was processed. |
| titles_fetched | number | yes | Number of pages fetched to extract <title>. |
| total_urls_in_sitemap | number | yes | Total URLs found in the sitemap. |
| urls_included | number | yes | URLs included after applying the limit. |
No examples provided.
audit_schema ~113
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 | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL whose JSON-LD and microdata to validate against schema.org expected fields. |
| Name | Type | Req | Description |
|---|---|---|---|
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| issues | array | yes | Validation issues found. |
| json_ld_blocks | number | yes | Total JSON-LD blocks found. |
| json_ld_parse_errors | number | yes | Number of JSON-LD blocks that failed to parse. |
| microdata_types_present | array | yes | Schema types found via microdata (itemtype). |
| note | string | — | — |
| schema_types_present | array | yes | @type values found across all JSON-LD blocks. |
| summary | object | yes | — |
| url | string | yes | URL that was audited. |
No examples provided.
audit_sitemap ~113
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 | Type | Req | Description |
|---|---|---|---|
| concurrency | integer | — | Parallel predict_citation calls. Higher is faster but more rate-limit risk. |
| limit | integer | — | Max URLs to score. Sitemap is sliced after parsing. |
| sitemap_url | string | yes | URL of sitemap.xml (or a sitemap index). Nested sitemaps are followed. |
| Name | Type | Req | Description |
|---|---|---|---|
| audited | number | yes | Number of URLs that were scored. |
| average_score | number | yes | Mean predict_citation score across scored URLs. |
| errors | array | yes | URLs whose audit threw an error. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| sitemap_url | string | yes | The sitemap URL that was audited. |
| total_urls | number | yes | Total URLs found in the sitemap. |
| worst_first | array | yes | Up to 20 lowest-scoring URLs, worst first. |
No examples provided.
audit_sitemap_map ~160
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 | Type | Req | Description |
|---|---|---|---|
| domain | string | — | Domain to look up citations for. If omitted, inferred from the sitemap host. |
| limit | integer | — | Max sitemap URLs to consider. |
| since | string | — | ISO date floor; only count citations recorded on or after this date. |
| sitemap_url | string | yes | URL of sitemap.xml (or a sitemap index). Nested sitemaps are followed. |
| Name | Type | Req | Description |
|---|---|---|---|
| citations_in_cache | number | yes | Total citation cache entries for this domain. |
| coverage_pct | number | yes | Percentage of sitemap URLs that have been cited (0-100). |
| domain | string | yes | Domain whose citation cache was queried. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| mapped | number | yes | URLs found in the citation cache. |
| mapped_urls | array | yes | Sitemap URLs present in the cache, sorted by citation count desc. |
| note | string | — | — |
| since | string | — | — |
| sitemap_url | string | yes | The sitemap that was processed. |
| total_urls | number | yes | Total sitemap URLs considered. |
| unmapped | number | yes | URLs not yet seen in the citation cache. |
| unmapped_urls | array | yes | Sitemap URLs not yet cited (up to 200). |
No examples provided.
audit_structured_data ~133
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 | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to inspect for missing JSON-LD. The page is fetched and its content signals are used to suggest schema types. |
| Name | Type | Req | Description |
|---|---|---|---|
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| note | string | — | — |
| schema_types_present | array | yes | @type values already present on the page. |
| signals_detected | object | yes | Content signals detected (e.g. og:type=article). |
| suggestions | array | yes | Schema additions suggested for this page. |
| summary | object | yes | — |
| url | string | yes | URL that was inspected. |
No examples provided.
citations_check ~247
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 | Type | Req | Description |
|---|---|---|---|
| engine | string | — | 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_ser… |
| max_results | integer | — | Maximum citations to return. |
| perplexity_model | string | — | Perplexity model override (e.g. 'sonar', 'sonar-pro', 'sonar-reasoning'). Only used when engine='perplexity'. Defaults to 'sonar-pro'. |
| query | string | yes | The search query to test (what would a user ask an AI?) |
| Name | Type | Req | Description |
|---|---|---|---|
| cached | boolean | yes | Whether the result was served from the local cache. |
| citations | array | yes | Cited URLs ordered by rank. |
| engine | string | yes | Engine used for this response. |
| fetched_at | string | yes | UTC ISO-8601 timestamp of the fetch. |
| interpretation_note | string | yes | Guidance on how to interpret results from this engine. |
| query | string | yes | The query that was executed. |
| raw_answer | string|null | — | Raw answer text from the engine, if available. Absent for web_rank engines (bing_serp, brave_serp) that return ranked URLs without a synthesized answer. |
| surface | string | yes | Engine surface type: consumer_scrape, api_proxy, or web_rank. |
No examples provided.
citations_evidence ~183
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 | Type | Req | Description |
|---|---|---|---|
| context_chars | integer | — | Half-width of the snippet window around each citation mention (chars). Total snippet is up to 2x this. |
| engine | string | — | AI engine to query. web_rank engines (bing_serp, brave_serp) lack raw_answer and return no evidence. |
| max_results | integer | — | Max citations to extract evidence for. |
| query | string | yes | Search query whose AI answer to extract citation evidence from. |
| Name | Type | Req | Description |
|---|---|---|---|
| citations_total | number | yes | — |
| engine | string | yes | Engine used. |
| evidence | array | yes | Per-citation evidence extracted from the raw answer. |
| evidence_found | number | yes | Citations whose URL was located in the raw answer. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| has_raw_answer | boolean | yes | Whether the engine returned a raw answer. |
| note | string | — | — |
| query | string | yes | The query whose answer was analyzed. |
| raw_answer_chars | number | yes | Length of the engine's raw answer. |
No examples provided.
citations_freshness ~129
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 | Type | Req | Description |
|---|---|---|---|
| engine | string | — | AI engine to query for the citation set. |
| max_results | integer | — | How many cited URLs to inspect. |
| query | string | yes | Search query whose cited URLs to score for freshness. |
| Name | Type | Req | Description |
|---|---|---|---|
| average_days_old | number|null | yes | Mean age in days across URLs with a detectable dateModified. |
| buckets | object | yes | Freshness bucket distribution. |
| engine | string | yes | Engine used. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| note | string | — | — |
| per_url | array | yes | Per-URL freshness details. |
| query | string | yes | The query whose citations were scored. |
| recency_score | number | yes | 0-100 average recency weight across cited URLs (halflife=365d). |
No examples provided.
citations_predict ~85
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 | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to score for citation likelihood. Must be absolute http(s). |
| Name | Type | Req | Description |
|---|---|---|---|
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| fixes | array | yes | Ranked list of concrete improvements to raise the score. |
| grade | string | yes | Letter grade (A-F) derived from the score. |
| score | number | yes | 0-100 citation likelihood score. |
| signals | object | yes | Per-signal boolean/numeric values used to compute the score. |
| url | string | yes | URL that was scored. |
No examples provided.
citations_provenance ~156
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 | Type | Req | Description |
|---|---|---|---|
| engines | array | — | 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… |
| max_results | integer | — | Max citations per engine. |
| query | string | yes | Search query to fan out across multiple engines. |
| Name | Type | Req | Description |
|---|---|---|---|
| consensus_urls | array | yes | URLs cited by ALL succeeding engines (requires >=2 engines). |
| engines | array | yes | Per-engine run summary. |
| engines_queried | number | yes | — |
| engines_succeeded | number | yes | — |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| note | string | — | — |
| per_url | array | yes | All unique cited URLs sorted by cross-engine consensus (engine_count desc). |
| query | string | yes | The query that was fanned across engines. |
| summary | object | yes | — |
No examples provided.
citations_trend ~167
Report citation rate over time for a panel from stored snapshots. Read-only; cache-only — makes no API calls to any AI engine and costs no API quota. Reads snapshot files from <config>/snapshots/<panel>/. Returns: snapshots[] (one entry per panel_run invocation, each with timestamp and citation_rate), plus per-query deltas (gained/lost/unchanged) comparing first vs last snapshot. Returns an empty series when no snapshots exist yet. No auth required. No rate limits. Use panel_run to accumulate snapshots first; use since to restrict the time window.
| Name | Type | Req | Description |
|---|---|---|---|
| panel | string | yes | Panel name to report on. |
| since | string | — | ISO date floor, e.g. '2026-01-01'. Only include snapshots on or after. |
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | — | Domain tracked by the panel. |
| first_taken_at | string | — | Timestamp of the oldest snapshot. |
| last_taken_at | string | — | Timestamp of the newest snapshot. |
| panel | string | yes | Panel name. |
| query_deltas | array | yes | Per-query changes between first and last snapshot. |
| series | array | yes | Time-series of citation rates, one entry per snapshot. |
| snapshots | number | yes | Number of snapshots available. |
No examples provided.
competitors_canonical_set ~184
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 | Type | Req | Description |
|---|---|---|---|
| engines | array | — | 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. |
| exclude_domains | array | — | Domains to filter out (e.g. your own brand, Wikipedia, Reddit). Suffix-match. |
| max_results | integer | — | Max citations per engine. |
| query | string | yes | Search query to fan out across engines. |
| top_n | integer | — | Max competitor domains to return. |
| Name | Type | Req | Description |
|---|---|---|---|
| domains | array | yes | Competitor domains ranked by cross-engine consensus. |
| engines | array | yes | Per-engine run summary. |
| engines_queried | number | yes | — |
| engines_succeeded | number | yes | — |
| excluded_domains | array | yes | Registered domains that were filtered out. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| note | string | — | — |
| query | string | yes | The query that was fanned across engines. |
| top_n | number | yes | Maximum domains returned. |
| total_unique_domains | number | yes | Total unique competitor domains found before top_n truncation. |
No examples provided.
competitors_compare ~82
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 | Type | Req | Description |
|---|---|---|---|
| urls | array | yes | URLs to compare side-by-side. 2-10 URLs. One is typically yours and the rest are cited competitors. |
| Name | Type | Req | Description |
|---|---|---|---|
| diverging_signals | array | yes | Signals where at least one URL differs from the others. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| rows | array | yes | Per-URL predict_citation rows (or { url, error } on failure). |
No examples provided.
competitors_compete ~151
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 | Type | Req | Description |
|---|---|---|---|
| engine | string | — | AI engine to query for the citation set. 'auto' picks the first available key. |
| max_competitors | integer | — | How many cited URLs to compare against your_url. Capped at 9 (compare_domains accepts max 10 URLs total including yours). |
| query | string | yes | Search query to test (what would a user ask an AI?). |
| your_url | string | yes | Your URL to benchmark against the cited competitors. |
| Name | Type | Req | Description |
|---|---|---|---|
| average_competitor_score | number|null | yes | Mean score across competitor URLs. |
| comparison | — | yes | Full compare_domains result. |
| competitors | array | yes | Competitor URLs that were compared. |
| engine | string | yes | Engine used for the citation fetch. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| query | string | yes | The query that was tested. |
| score_gap | number|null | yes | your_score minus average_competitor_score. |
| your_in_citations | boolean | yes | Whether your URL appeared in the engine's citation list. |
| your_score | number|null | yes | predict_citation score for your URL (null on error). |
| your_url | string | yes | Your URL that was benchmarked. |
No examples provided.
domain_am_i_cited ~171
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 | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to check, e.g. 'automatelab.tech' (without protocol). |
| engine | string | — | 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_ser… |
| queries | array | yes | Queries to test the domain against. 1-20 queries per call. |
| Name | Type | Req | Description |
|---|---|---|---|
| consensus | object | — | Cross-engine consensus stats (multi_engine mode). |
| domain | string | yes | The domain that was checked. |
| engine | string | — | Engine used (single_engine mode only). |
| engines | array | — | Per-engine summary rows (multi_engine mode). |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| mode | string | yes | Whether one or multiple engines were queried. |
| per_engine | array | — | Full per-engine detail (multi_engine mode). |
| results | array | — | Per-query results (single_engine mode). |
| summary | object | — | Aggregate summary (single_engine mode). |
| surface | string | — | Engine surface type (single_engine mode only). |
No examples provided.
domain_cited_for ~128
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 | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to look up, e.g. 'automatelab.tech'. |
| engine | string | — | Filter by engine. Omit to include all. |
| limit | integer | — | Maximum results. |
| since | string | — | ISO date floor, e.g. '2026-01-01'. Only return entries fetched on or after this date. |
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain that was looked up. |
| engine_filter | string | — | Engine filter applied, if any. |
| results | array | yes | Cache entries where this domain was cited. |
| since | string | — | ISO date floor applied, if any. |
| source | string | yes | Always 'local_cache' — no external calls made. |
| total | number | yes | Total entries returned. |
No examples provided.
domain_cited_for_diff ~153
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 | Type | Req | Description |
|---|---|---|---|
| baseline_until | string | yes | ISO date (or ISO datetime). Baseline window = all cache entries fetched on or before this timestamp. |
| current_since | string | — | ISO date floor for the 'current' window. Defaults to baseline_until. |
| domain | string | yes | Domain to diff, e.g. 'automatelab.tech'. |
| engine | string | — | Filter by engine. Omit to include all. |
| Name | Type | Req | Description |
|---|---|---|---|
| baseline_until | string | yes | Upper bound of the baseline window. |
| counts | object | yes | — |
| current_since | string | yes | Lower bound of the current window. |
| domain | string | yes | Domain that was diffed. |
| engine_filter | string | — | Engine filter applied, if any. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| gained | array | yes | Queries gained (newly cited) since the baseline. |
| lost | array | yes | Queries lost (were cited, no longer are). |
| source | string | yes | — |
| unchanged_queries | array | yes | Queries cited in both windows. |
No examples provided.
panel_run ~175
Run a saved panel through am_i_cited and append a timestamped snapshot. Side effects: makes external API calls to the configured AI engine (costs API quota); writes one snapshot file to disk at <config>/snapshots/<panel>/<iso>.json. Requires at least one engine API key (same as am_i_cited). Returns per-query citation presence and a citation_rate summary for the run. Use panel_track to create a panel first; use citations_trend to read the accumulated trend after multiple runs.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | — | Override the panel's default domain for this run. |
| engine | string | — | AI engine to query. Use bing_serp/brave_serp for web_rank comparison only — am_i_cited will refuse them. |
| name | string | yes | Panel name previously saved via track_queries. |
| Name | Type | Req | Description |
|---|---|---|---|
| saved_to | string | yes | Absolute file path of the snapshot that was written. |
| snapshot | object | yes | The snapshot that was appended. |
No examples provided.
panel_track ~174
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 <config>/panels/<name>.json.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | — | 'save' writes the panel, 'load' returns an existing panel, 'list' enumerates all panels. |
| domain | string | — | Default domain to track for this panel, e.g. 'automatelab.tech'. |
| name | string | yes | Panel name, e.g. 'editorial-watchlist'. Used to save and recall the query set. |
| queries | array | — | Queries to save under this panel. Omit to read the existing panel. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | Error message when the panel was not found. |
| panel | object | — | The panel object that was saved or loaded. |
| panels | array | — | All panel names (action=list). |
| saved | boolean | — | True when action=save succeeded. |
No examples provided.
report_visibility ~332
Turnkey AI visibility report for a domain across a query set. Composes check_citations over every query (or a saved panel) and returns the metrics AI-visibility trackers sell as a dashboard, in one call: mention frequency (citation_rate), share_of_voice vs competitors, average rank when cited, and brand sentiment from the answer text. Side effects: one check_citations call per query (costs API quota for uncached queries; cached queries are free). Returns structured summary + top_domains + per_query, plus a rendered Markdown report (include_markdown=true) suitable for a public page. Provide queries[] or a panel name. Same engine selection as check_citations.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_terms | array | — | Brand name variants to detect in answer text for sentiment (defaults to the domain's second-level label). |
| competitors | array | — | Optional competitor domains to surface explicitly in the share-of-voice table. |
| domain | string | yes | The domain you are measuring visibility for (e.g. automatelab.tech). |
| engine | string | — | AI engine to query. 'auto' picks the first configured key. Same selection as check_citations. |
| include_markdown | boolean | — | If true (default), include a rendered Markdown report under `markdown`. |
| max_results | integer | — | Max citations to pull per query. |
| panel | string | — | Name of a saved panel (see panel_track) to pull queries from. Provide this OR `queries`. |
| queries | array | — | Queries to run. Provide this OR `panel`. Each is sent to the AI engine via check_citations. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | — |
| markdown | string | — | Rendered Markdown report. Present when include_markdown=true. |
| per_query | array | yes | — |
| summary | object | yes | — |
| top_domains | array | yes | Share-of-voice table, most-cited domains first. |
No examples provided.
signals_ai_overview ~95
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 | Type | Req | Description |
|---|---|---|---|
| hl | string | — | Language code, default 'en'. |
| location | string | — | Location string, e.g. 'United States'. Affects AI Overview eligibility. |
| query | string | yes | Search query to check for Google AI Overview. |
| Name | Type | Req | Description |
|---|---|---|---|
| ai_overview_present | boolean | yes | Whether Google returned an AI Overview for this query. |
| ai_overview_text | string|null | yes | AI Overview text, if present. |
| cached | boolean | yes | Whether the result was served from local cache. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| query | string | yes | The query checked. |
| sources | array | yes | URLs cited in the AI Overview. |
No examples provided.
signals_answer_box ~150
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 | Type | Req | Description |
|---|---|---|---|
| engine | string | — | AI engine to query. web_rank engines (bing_serp, brave_serp) lack raw_answer and will return position 'unknown'. |
| max_results | integer | — | Max citations to locate. |
| query | string | yes | Search query whose AI answer to measure citation positions on. |
| Name | Type | Req | Description |
|---|---|---|---|
| answer_chars | number | yes | Total length of the engine's raw answer in characters. |
| buckets | object | yes | Count of citations per position bucket. |
| citations_total | number | yes | Total citations returned by the engine. |
| engine | string | yes | Engine used. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| note | string | — | — |
| positions | array | yes | Per-citation position in the AI answer. |
| query | string | yes | The query that was tested. |
No examples provided.
signals_bing_gap ~190
Join Bing Webmaster Tools query stats with am_i_cited per query. Surfaces queries where the domain ranks well in Bing but is not cited in AI - the closest editorial wins. Bing's index backs Copilot/ChatGPT/Perplexity grounding, so a Bing rank gap is an LLM-citation gap. Requires BING_WEBMASTER_API_KEY (Bing Webmaster Tools -> Settings -> API Access).
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to analyze, e.g. 'automatelab.tech'. Used for the citation check. |
| engine | string | — | AI engine for the citation check. |
| queries | array | yes | Queries to cross-reference. 1-20 per call. |
| site_url | string | — | Verified Bing Webmaster site URL. Defaults to 'https://<domain>/'. Bing uses the https origin WITH a trailing slash, NOT the sc-domain: form GSC uses. |
| Name | Type | Req | Description |
|---|---|---|---|
| closest_wins | array | yes | Queries where domain ranks in Bing top-10 but is not AI-cited (the editorial gap). |
| domain | string | yes | Domain analyzed. |
| engine | string | — | Engine used for the citation check. |
| rows | array | yes | Per-query Bing rank + AI citation cross-reference. |
| site_url | string | yes | Bing Webmaster siteUrl used (https origin with trailing slash). |
No examples provided.
signals_gsc_gap ~223
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 | Type | Req | Description |
|---|---|---|---|
| credentials_path | string | — | Path to GCP service account JSON. Defaults to env GOOGLE_APPLICATION_CREDENTIALS. |
| domain | string | yes | Domain to analyze, e.g. 'automatelab.tech'. Used both for the GSC site URL and the citation check. |
| end_date | string | yes | ISO date for GSC range end, e.g. '2026-05-01'. |
| engine | string | — | AI engine for the citation check. |
| queries | array | yes | Queries to cross-reference. 1-20 per call. |
| site_url | string | — | Override the GSC siteUrl. Defaults to 'sc-domain:<domain>'. |
| start_date | string | yes | ISO date for GSC range start, e.g. '2026-04-01'. |
| Name | Type | Req | Description |
|---|---|---|---|
| closest_wins | array | yes | Queries where domain ranks in Google top-10 but is not AI-cited (the editorial gap). |
| domain | string | yes | Domain analyzed. |
| engine | string | — | Engine used for the citation check. |
| range | object | yes | GSC date range. |
| rows | array | yes | Per-query GSC + AI citation cross-reference. |
| site_url | string | yes | GSC siteUrl used. |
No examples provided.
signals_wikipedia ~178
List Wikipedia articles that reference the given domain. Read-only. One HTTPS GET to the Wikipedia API (en.wikipedia.org/w/api.php?action=query&list=exturlusage). No auth required; no API keys; no rate limits beyond Wikipedia's public API fair-use policy (~1 request/second). Returns article titles and URLs. Wikipedia backlinks are the highest-lift signal for LLM training corpora — a domain cited from Wikipedia is far more likely to appear in AI training data and citation pools. Use lang to query non-English Wikipedias.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to search for, e.g. 'automatelab.tech' (without protocol). |
| lang | string | — | Wikipedia language subdomain, e.g. 'en', 'de', 'fr'. |
| limit | integer | — | Maximum mention rows to return. |
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain that was searched. |
| fetched_at | string | yes | UTC ISO-8601 timestamp. |
| lang | string | yes | Wikipedia language subdomain used. |
| mentions | array | yes | List of Wikipedia articles that cite the domain. |
| total | number | yes | Number of Wikipedia articles referencing this domain. |
No examples provided.