get_prompt_result

get_prompt_result MCP tool: the full detail of one or more prompt results: raw LLM response (opt-in), cited sources split visible/hidden, fan-out search calls and competitor mentions. Inputs, response shape, JSON example.

Updated 2026-09-24

get_prompt_result returns the full detail of one or more prompt results by id: the cited sources (split into visible and hidden), the fan-out search calls the LLM ran, the competitor mentions and, opt-in, the raw LLM response. It accepts up to 10 ids in a single call, so an agent can pull every LLM for one scan date at once. Each section is independently toggleable to keep payloads minimal.

When to use

Call this after list_prompt_results hands you the ids you care about. It is the heavy half of the read-the-history pattern: this is where the raw response and the full source list actually travel. Because the raw response is the largest field (a full LLM answer, often several KB), it is off by default. Set include.response = true when you need the text, and cap it with maxResponseChars if you only want the head.

Input

Field Type Default Description
projectId string (CUID) required Project that must own every result (scopes the access check).
resultId string (CUID) - A single result id. Provide this or resultIds.
resultIds string[] (CUID) - 1 to 10 result ids fetched in one call.
include.response boolean false Include the raw LLM response. Off by default (heaviest field).
include.sources boolean true Include cited sources (visible + hidden).
include.fanOut boolean true Include fan-out search calls (queries + sources) and the engine's web search results (searchResults).
include.competitors boolean false Include competitor mentions.
include.localPlaces boolean false Include the business map (ChatGPT) or local pack (Google AI Overview) shown next to the answer.
maxResponseChars integer - Truncate the raw response to this many characters (sets truncated: true).

Response

data holds one object per resolved result, in the order requested. errors lists ids that were not found or not owned by the project, without blocking the rest of the batch. Sections appear only when their include flag is on.

{
  "success": true,
  "data": [
    {
      "id": "clx_res_2001",
      "promptId": "clx_prompt_07",
      "promptText": "best affordable AI visibility tracker",
      "country": "US",
      "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.",
      "response": {
        "text": "There are several affordable options...",
        "length": 4820,
        "truncated": false
      },
      "sources": {
        "visible": [
          { "url": "https://g2.com/categories/geo", "title": "GEO tools on G2", "description": null, "anchorText": "G2", "position": 1 }
        ],
        "hidden": [
          { "url": "https://reddit.com/r/SEO/x", "title": "Reddit thread", "description": null, "anchorText": null, "position": 4 }
        ]
      },
      "fanOut": [
        { "queries": ["affordable ai visibility tracker"], "sources": [{ "url": "https://g2.com/categories/geo", "title": "GEO tools on G2" }], "at": "2026-06-08T06:01:00.000Z" }
      ],
      "searchResults": [
        { "url": "https://g2.com/categories/geo", "title": "GEO tools on G2", "rank": 1 }
      ],
      "localPlaces": [
        { "rank": 1, "name": "Rank Forever - Agence SEO Strasbourg", "url": "https://rankforever.fr/", "domain": "rankforever.fr", "rating": 5, "reviewCount": 22, "category": "Internet marketing service", "city": "Strasbourg", "isBrand": true }
      ],
      "competitors": [
        { "name": "Otterly", "rawName": "Otterly.ai", "position": 1, "context": "cited as a popular tracker", "sourceUrls": ["https://otterly.ai", "https://g2.com/otterly"] }
      ]
    }
  ],
  "errors": []
}

Tips and patterns

  • Leave include.response off until you actually need the text. Use responseLength from list_prompt_results to decide, and maxResponseChars to fetch just the opening.
  • Batch the ids of one scan date (one per LLM) into a single call to compare how each engine answered without N round-trips.
  • Visible sources are the ones cited inline in the answer; hidden sources are the ones shown under "More" / Sources. The split tells you what the reader actually sees versus what the LLM consulted.
  • Each competitor's sourceUrls is the list of pages that named that competitor in this answer, resolved from the answer itself: the AI shows the page next to a passage that names that competitor. It is an array and can be empty when the competitor is mentioned in prose with no cited source.
  • searchResults lists the web search results the engine saw before answering, in their order (rank), cited or not. ChatGPT no longer exposes its search queries to logged-out visitors: its fanOut is often empty, while searchResults stays filled.
  • Treat errors as expected, not fatal: an id can be missing if the result was pruned or belongs to another project.
  • include.localPlaces only returns something on ChatGPT and Google AI Overview: the four other engines never show a business map. isBrand marks the tracked brand's own listing, matched on the site domain first, then on the brand name. reviewCount follows Google's own rounding for large volumes.

Related tools

You can see where you stand today.

Free trial. Start tracking your AI visibility, no credit card.