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 of PromptResult rows 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 carries count (how many times this prompt cited the page without naming the brand) and llms (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 = false client-side before calling run_page_audit to avoid burning audit quota/credits on pages already covered.
  • Compete on prompt context: competitorsTakingOver is 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) and llm to 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.