list_prompts

list_prompts MCP tool: tracked prompts for a project with mention totals, mention rate, per-LLM visibility and the latest result. Filter by persona, category, country.

Updated 2026-07-23

list_prompts returns the tracked prompts of a project, with aggregate stats, per-LLM visibility and the latest scan result. It is the core read tool for visibility analysis: use it whenever a question is about "where am I mentioned?" at the prompt level.

When to use

Reach for list_prompts when the user asks "which prompts am I winning on?", "where is my mention rate dropping?", "what does ChatGPT see for prompt X?". It pairs naturally with list_competitors (who else is mentioned on those prompts) and list_fan_outs (what queries the LLMs ran behind a given prompt). Filter by personaIds or categoryIds to scope to a target audience.

Input

Field Type Default Description
projectId string (CUID) required Project to query.
cursor string - Pagination cursor.
limit integer 20 1 to 100.
filters.isActive boolean - Only active or only paused prompts.
filters.country string (2 chars) - ISO country code.
filters.personaIds string[] - Filter to prompts tracked under at least one of these persona IDs.
filters.categoryIds string[] - Filter by one or more category IDs.
filters.textContains string - Case-insensitive substring match.
sortBy enum created_desc created_desc, created_asc, text_asc.

Response

data carries one entry per prompt with stats (totals, mention rate, per-LLM visibility) and a latestResult.perLlm array showing the most recent run on each engine. A prompt can be tracked under several personas: personas lists them all, and latestResult.perLlm holds one entry per LLM × persona pair (the entry's persona is null for prompts scanned without a persona).

{
  "data": [
    {
      "id": "clxprompt001",
      "text": "best AI visibility tracker for SEO consultants",
      "country": "US",
      "isActive": true,
      "personas": [
        { "id": "clxp1", "name": "Independent SEO consultant" },
        { "id": "clxp2", "name": "In-house marketing manager" }
      ],
      "category": { "id": "clxc1", "name": "Comparisons", "color": "#3b82f6" },
      "stats": {
        "totalResults": 84,
        "mentionRate": 0.6309,
        "visibilityByLlm": {
          "CHATGPT": 0.8,
          "PERPLEXITY": 0.95,
          "GEMINI": 0.4
        }
      },
      "latestResult": {
        "perLlm": [
          {
            "llm": "CHATGPT",
            "persona": { "id": "clxp1", "name": "Independent SEO consultant" },
            "mentioned": true,
            "brandPosition": 2,
            "sentiment": "positive",
            "mentionCount": 3,
            "runDate": "2026-04-25T06:00:00.000Z"
          },
          {
            "llm": "CHATGPT",
            "persona": { "id": "clxp2", "name": "In-house marketing manager" },
            "mentioned": false,
            "brandPosition": null,
            "sentiment": null,
            "mentionCount": 0,
            "runDate": "2026-04-25T06:00:00.000Z"
          }
        ]
      },
      "createdAt": "2026-03-01T10:00:00.000Z"
    }
  ],
  "pageInfo": { "hasMore": true, "nextCursor": "clxprompt020", "totalCount": 47 },
  "summary": { "totalPrompts": 47 }
}

Tips and patterns

  • Sort by created_desc to investigate fresh visibility shifts; sort by text_asc when grouping prompts by topic in a report.
  • visibilityByLlm keys are restricted to the LLMs actually tracked on the project. A missing LLM means the prompt has no run for it yet.
  • latestResult.perLlm[].brandPosition is null when not mentioned. Check mentioned before relying on the position number.
  • Combine a personaIds filter with sortBy: text_asc to produce a stable per-persona report.
  • For multi-persona prompts, group latestResult.perLlm by persona.id to compare visibility across audiences: a brand can be cited for one persona and absent for another on the same LLM.

Related tools

You can see where you stand today.

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