list_missed_citations
list_missed_citations MCP tool: surface URLs of your own domain cited by LLMs where the brand isn't named, ranked by frequency, with the competitors taking the citation instead.
Updated 2026-05-07
list_missed_citations
list_missed_citations returns URLs from your project's own domain that LLMs cite as sources, but where the brand isn't named in the response. Each row is a near-miss: the page is ranking well enough to be pulled into the answer, yet the LLM doesn't credit your brand. The tool ranks pages by citation count and surfaces the top competitors mentioned in those same responses, so your agent can prioritize and compare.
When to use
Call it when an agent needs a triage queue of optimization candidates. Combine with run_page_audit to close the gap automatically:
list_missed_citations → pick top 3 with hasExistingAudit=false → run_page_audit on each → poll get_page_audit
It only returns pages on the project's own domain (and subdomains). Third-party citations are not surfaced — they are not actionable through Page Audit.
Input
| Field | Type | Default | Description |
|---|---|---|---|
projectId |
string (CUID) | required | Project to scope the query to. Must be in the API key's effectiveProjectIds. |
cursor |
string | — | Cursor returned in pageInfo.nextCursor from the previous page. The cursor is the URL of the last item. |
limit |
int | 20 | Max items to return. 1–100. |
since |
ISO datetime | — | Restrict to PromptResult rows created on/after this date. |
llm |
enum | — | One of CHATGPT, CLAUDE, PERPLEXITY, GEMINI, GROK, COPILOT, GOOGLE_AI_MODE, GOOGLE_AIO. Restrict to a single LLM. |
minOccurrences |
int | 1 | Drop pages cited fewer than this many times after grouping. |
Response
{
"data": [
{
"url": "https://example.com/features/integrations",
"citedCount": 7,
"llms": ["CHATGPT", "PERPLEXITY"],
"prompts": [
{
"id": "clx_p1",
"text": "Best CRM with native Slack integration",
"count": 4,
"llms": ["CHATGPT", "PERPLEXITY"]
}
],
"competitorsTakingOver": [
{ "name": "Acme CRM", "count": 5 },
{ "name": "Beta Suite", "count": 2 }
],
"lastSeenAt": "2026-05-06T14:32:11.000Z",
"hasExistingAudit": false,
"latestAuditId": null
}
],
"pageInfo": {
"hasMore": true,
"nextCursor": "https://example.com/features/integrations",
"totalCount": 42
},
"summary": { "totalPages": 42 }
}
Field notes:
citedCount: number ofPromptResultrows where this URL was cited as a source AND the response did not mention the brand.prompts: up to 20 prompts, sorted by occurrence count DESC. Each entry carriescount(how many times this prompt cited the page without naming the brand) andllms(which LLMs ran that prompt).competitorsTakingOver: top 3 competitors mentioned in the same near-miss responses, ordered by occurrence count.hasExistingAudit/latestAuditId: lets the agent skip pages already covered by a Page Audit and link to the most recent one.
Tips and patterns
- Sort priority: by default, results are sorted by
citedCount DESC. If two pages tie, URL is the secondary key — pagination is stable. - De-dup vs. existing audits: filter
hasExistingAudit = falseclient-side before callingrun_page_auditto avoid burning audit quota/credits on pages already covered. - Compete on prompt context:
competitorsTakingOveris the agent's hint for the why. If "Acme CRM" wins on 5/7 citations of a page about integrations, the page should make the integration story unmissable. - Window the analysis: combine
since(e.g. last 30 days) andllmto focus on a recent regression on a single LLM, not a global drift.
Related tools
- run_page_audit — trigger a Page Audit on the URL surfaced here.
- list_page_audits — confirm what's already been audited before queuing more.
- list_competitors — deepen the competitive read on the names returned in
competitorsTakingOver. - list_llm_sources — broader source surface (third-party domains too); missed_citations is the narrower, action-oriented slice.