list_prompt_results
list_prompt_results MCP tool: a prompt's history as one lightweight row per LLM and scan, with mention metadata and source/fan-out/competitor counts. No raw response. Inputs, response shape, JSON example.
Updated 2026-06-08
list_prompt_results
list_prompt_results returns a prompt's history: one lightweight row per LLM × persona × scan, ordered by date. Each row carries the result metadata (LLM, persona, whether the brand was mentioned, brand position, sentiment, mention context) plus counts of cited sources (visible and hidden), fan-out queries and competitors, and the length of the raw response. It deliberately never carries the raw LLM response or the full source bodies, so scanning a long history stays cheap.
When to use
This is the index half of the read-the-history pattern. Use it to see how a prompt evolved over time, or how it performed on a given scan, without burning tokens on full responses. Filter by promptId to follow one prompt, by trackingRunId to read a single scan, or by dateRange to read history from a date. Each row exposes its id. Pass that id (or up to 10 of them) to get_prompt_result to pull the raw response, the cited sources and the fan-out calls for the specific result you care about.
Input
| Field | Type | Default | Description |
|---|---|---|---|
projectId |
string (CUID) | required | Project to query (scopes the access check). |
cursor |
string | — | Pagination cursor (the id of the last row). |
limit |
integer | 20 | 1 to 100. |
filters.promptId |
string (CUID) | — | Restrict to one prompt's history. |
filters.llm |
enum | — | Restrict to one LLM. |
filters.personaId |
string (CUID) | — | Restrict to one persona. |
filters.trackingRunId |
string (CUID) | — | Restrict to one scan (see list_scans). |
filters.mentioned |
boolean | — | Keep only mentioned (true) or not-mentioned (false) results. |
filters.dateRange.from |
string (ISO) | — | Results created on/after this timestamp. |
filters.dateRange.to |
string (ISO) | — | Results created on/before this timestamp. |
sortBy |
enum | recent |
recent (newest first) or oldest. |
Response
data is an array of result rows. responseLength is the character count of the stored raw response (so an agent can decide whether to fetch it); hasResponse is false when no response was captured.
{
"data": [
{
"id": "clx_res_2001",
"promptId": "clx_prompt_07",
"date": "2026-06-08T06:01:00.000Z",
"trackingRunId": "clx_run_88",
"llm": "PERPLEXITY",
"persona": { "id": "clx_persona_1", "name": "Solo founder" },
"mentioned": true,
"mentionCount": 2,
"brandPosition": 3,
"sentiment": "positive",
"mentionContext": "Listed among affordable AI visibility trackers.",
"counts": { "sourcesVisible": 4, "sourcesHidden": 6, "fanOutQueries": 3, "competitors": 5 },
"responseLength": 4820,
"hasResponse": true
}
],
"pageInfo": { "hasMore": true, "nextCursor": "clx_res_2001", "totalCount": 210 },
"summary": { "totalResults": 210 }
}
Tips and patterns
- Start with
filters.promptId+sortBy: "oldest"to read a prompt's timeline in order, then fetch only the results wherementionedflipped. countstells you what aget_prompt_resultcall would return before you make it. A row withfanOutQueries: 0andsourcesVisible: 0has little to inspect.- To compare engines on the same scan, filter by
trackingRunIdand read the per-LLM rows side by side, then batch theirids into oneget_prompt_resultcall. responseLengthlets you skip fetching very large responses (or cap them withmaxResponseCharson the get).
Related tools
- get_prompt_result — pull the raw response, sources and fan-out for one or more rows.
- list_scans — discover scan IDs to filter by
trackingRunId. - list_llm_sources — sources aggregated by domain across all prompts.