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. titleandhowToFixare in English.detailsholds the facts of the issue (blocked bots, duplicate URLs, missing fields) ornull.summarygives the crawl the issues come from:crawlIdandcheckedAt.summaryisnullanddataempty while the site has no diagnostic.
Tips and patterns
- One page at a time. Before editing a page, call it with
filters.pageUrland 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_healthcomparison.
Related tools
- get_site_health: scores and every fix.
- list_priority_pages: the plan, in the order to fix things.
- get_page_fix: the full fix of one page, with JSON-LD and links.