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 where mentioned flipped.
  • counts tells you what a get_prompt_result call would return before you make it. A row with fanOutQueries: 0 and sourcesVisible: 0 has little to inspect.
  • To compare engines on the same scan, filter by trackingRunId and read the per-LLM rows side by side, then batch their ids into one get_prompt_result call.
  • responseLength lets you skip fetching very large responses (or cap them with maxResponseChars on 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.