list_site_issues

list_site_issues MCP tool: issues of the latest site crawl, one row per page and check, with how to fix each. Filter by page, severity level or check.

Updated 2026-10-19

list_site_issues lists the issues of the latest site crawl, one row per page and check, with how to fix each one and the facts behind it. It is the tool an agent working in a code editor (Claude Code, Cursor) uses to fix the site itself: filter on one page, read what is wrong, change the template or the content.

When to use

After get_site_health, to get the pages of a fix (filters.check), or all the issues of one page you are about to edit (filters.pageUrl). Every issue is listed, with how to fix it. On any crawled page, run_page_fix goes further: JSON-LD ready to paste and internal links to add.

Input

Field Type Default Description
projectId string (CUID) required Project scope.
filters.pageUrl string (URL) none Only this page's issues. www., a trailing slash and UTM parameters are ignored.
filters.level BLOCKING | AI_IMPACT | CONSISTENCY | SEO_HYGIENE none Only this severity level.
filters.check string none Only this check, as in get_site_health fixes[].check.
cursor string none nextCursor from the previous page.
limit number 20 1 to 100.

Response

{
  "data": [
    {
      "id": "robots-ai-blocked|",
      "url": null,
      "check": "robots-ai-blocked",
      "level": "BLOCKING",
      "title": "AI robots blocked by robots.txt",
      "howToFix": "Remove the Disallow rules that apply to these robots in robots.txt, or add an Allow rule for them.",
      "details": { "bots": ["GPTBot", "ClaudeBot"] }
    },
    {
      "id": "js-only-content|https://example.com/pricing",
      "url": "https://example.com/pricing",
      "check": "js-only-content",
      "level": "BLOCKING",
      "title": "Content only visible with JavaScript",
      "howToFix": "Render the main content on the server (SSR or static generation) so it is in the HTML before any JavaScript runs.",
      "details": { "rawWords": 12, "renderedWords": 640 }
    }
  ],
  "pageInfo": { "hasMore": true, "nextCursor": "20", "totalCount": 57 },
  "summary": { "crawlId": "cmg8a1k2p0001l70f3b9c4d2e", "checkedAt": "2026-10-01T04:12:00.000Z" }
}
  • Rows are sorted by level (most serious first), issues of the whole site (url: null) first within a level, then by check and URL.
  • title and howToFix are in English. details holds the facts of the issue (blocked bots, duplicate URLs, missing fields) or null.
  • summary gives the crawl the issues come from: crawlId and checkedAt.
  • summary is null and data empty while the site has no diagnostic.

Tips and patterns

  • One page at a time. Before editing a page, call it with filters.pageUrl and fix the rows in order.
  • Fix the template, not the page. When the same check hits dozens of pages (title-duplicate, heading-skip), the cause is usually one template: fix it once.
  • Log what you shipped. Call create_action_log once a fix is live, then compare at the next crawl with get_site_health comparison.

Related tools

You can see where you stand today.

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