get_ai_sources_check_detail
Retrieve summary and raw engine answers for an AI Sources check, showing what engines said and the pages they retrieved. Filter by engine or question.
Instructions
One AI Sources check (checkId, not runId): its stored summary, the same shape as get_ai_sources_dashboard as of that check, and with includeAnswers=true the engines' raw answers and the pages each RETRIEVED. In compact view summary.brands and summary.pages are paged as on get_ai_sources_dashboard; view=full returns every row. includeSummary=false leaves the summary out, so a filtered answer read stays small. The compact summary runs 30,000-70,000 characters; one engine and one question without it, 5,000-30,000 (Perplexity's page lists are the long ones); answers are dominated by the page lists, so narrow with engine or promptIndex.
Read the summary exactly as get_ai_sources_dashboard says: RETRIEVED, never cited; PER ENGINE, never pooled; COUNTS, never rates ('n of N answers'); not measured is never zero; summary.verdict is a condition code; render summary.limits.sentences and actionHint.text VERBATIM.
Three answer states, never merged: answers (an empty companiesNamed is an answer that recommended nobody, a real finding), noAnswerShown (read, nothing shown, not counted: 'Google showed no AI Overview for this question'), unansweredQueries (we could not read it: never 'not named').
rank on an answer is the order of first mention, computed by CompetLab; the engine gave no position.
A missing sources key means the engine reported no retrieval; an empty array is the measured 'retrieved nothing'.
answersTruncated true: whole questions were dropped from the end; narrow and retry.
Answer text is the ENGINE's wording about companies it named, never CompetLab's assessment.
run_not_summarized: the check exists and has nothing to report (still running, or abandoned). Say it produced no data; never missing, never zeros. check_not_found and invalid_check_id are different errors. Field rules not listed here arrive in readingGuide, the first field of every response.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | compact or full; omit for the server's default view. compact pages the long lists and keeps the customer's own row on every page. full returns every row in one response: up to about 200,000 characters on AI Visibility and 450,000 on AI Sources. Paging parameters with view=full are refused (paging_requires_compact_view). | |
| engine | No | Return only this engine's answers (perplexity, google_ai_overviews). Requires includeAnswers=true. Narrows answers, unansweredQueries and noAnswerShown; changes nothing under summary and does not narrow engineStatus. | |
| checkId | Yes | Check ID (from get_ai_sources_history) | |
| pagesHost | No | Return only the pages on this host, as named on summary.coreHosts[]. The way to see which pages on a core host name the customer or other companies. Page counts stay per engine. | |
| projectId | Yes | Project ID (from list_projects) | |
| pagesLimit | No | Rows of summary.pages per page in compact view (default 10, max 100). | |
| brandsLimit | No | Rows of summary.brands per page in compact view (default 10). The customer's own row is always included. Quote summary.brandsPage.total, never the rows on the page, as the length of the list: the companies the engines named, plus the customer's row and any tracked competitor's that no answer named (answersNaming 0). | |
| pagesOffset | No | summary.pages rows to skip in compact view (0-based). summary.pagesPage.hasMore says a next page exists. | |
| promptIndex | No | Return only the answers for this question, across every engine. Requires includeAnswers=true. Zero-based: the question's position in the check's question list, matching promptIndex on each answer. | |
| brandsOffset | No | summary.brands rows to skip in compact view (0-based). summary.brandsPage.hasMore says a next page exists. | |
| includeAnswers | No | Default false. Set true to also get what the engines actually said — every buying question sent, the answer text, the companies read out of it in order of first mention, and the pages the engine RETRIEVED to write it with the passage it handed back for each — plus engineStatus, one entry per engine the check asked. Cost: large, and dominated by the page lists — up to 8 answers per engine, each carrying that engine's full retrieved list, which for a searching engine runs to dozens of pages with a passage each. Prefer engine= or promptIndex= over fetching everything. ATTRIBUTION: the answer text is unverified engine output about the companies it named, including third parties; report it as what that engine said, never as CompetLab's assessment. The pages are retrieved, never cited: the engine does not disclose which it leaned on. engineStatus: questionsAsked, answersReceived, answersAbsent and answersUnmeasured are separate counts; quote them apart, never as a ratio. noAnswerShown: the engine was read and showed nothing, not counted and not a failure; unansweredQueries: we could not read it, never 'not named'. | |
| includeSummary | No | Whether to return the check's summary beside the answers. Set false with includeAnswers=true when you already hold the summary and want one filtered answer read; set true to get both. Any paging parameter returns the summary, so paging with includeSummary=false is refused (paging_requires_summary). No filter changes a number under summary. |