get_site_health
get_site_health MCP tool: technical health of the site at its latest monthly crawl. Scores per severity level, fixes with their page count, and changes since the previous crawl.
Updated 2026-10-19
get_site_health returns the technical health of the project's site at its latest monthly crawl: one score per severity level, every fix found (one fix = one check, across all the pages it touches) from the most to the least urgent, and what changed since the previous crawl. It is the same diagnostic as the Site health page of the dashboard.
When to use
Start here when an agent needs to know whether the site itself keeps Google and AI engines from reading or citing it: AI robots blocked, pages that only render with JavaScript, broken canonicals, missing structured data, duplicate titles. Then read the pages and the way to fix each issue with list_site_issues, and the order to fix them in with list_priority_pages.
Input
| Field | Type | Default | Description |
|---|---|---|---|
projectId |
string (CUID) | required | Project scope. |
Response
No diagnostic yet
{ "success": true, "state": "running", "running": true }
state is none (the site was never crawled), running (the first crawl or its diagnostic is in progress) or failed (the last crawl failed).
Ready
{
"success": true,
"state": "ready",
"running": false,
"crawl": {
"id": "cmg8a1k2p0001l70f3b9c4d2e",
"checkedAt": "2026-10-01T04:12:00.000Z",
"pageCount": 212,
"pagesDiscovered": 230,
"maxPages": 250
},
"scores": [
{ "level": "BLOCKING", "score": 100, "fixes": 0 },
{ "level": "AI_IMPACT", "score": 64, "fixes": 5 },
{ "level": "CONSISTENCY", "score": 91, "fixes": 2 },
{ "level": "SEO_HYGIENE", "score": 72, "fixes": 6 }
],
"comparison": { "previousAt": "2026-09-01T04:10:00.000Z", "fixed": 4, "added": 1 },
"fixes": [
{
"check": "jsonld-missing",
"title": "No structured data for this kind of page",
"level": "AI_IMPACT",
"pages": 18,
"siteWide": false,
"isNew": false
},
{
"check": "title-duplicate",
"title": "Same title on several pages",
"level": "SEO_HYGIENE",
"pages": 34,
"siteWide": false,
"isNew": true
}
]
}
running: a new crawl is in progress. The diagnostic shown stays the previous one until it ends.crawl.pageCount: pages kept in the diagnostic.pagesDiscoveredversusmaxPagestells whether the plan's page limit cut the crawl.scores: one score out of 100 per level.BLOCKING(engines cannot read or index the pages),AI_IMPACT,CONSISTENCY(facts that contradict each other),SEO_HYGIENE(Google and Bing, whose index AI engines search).comparison: causes fixed and causes added since the previous crawl.nullon the first diagnostic.fixes: from the most to the least urgent.checkis a stable machine code,titleis in English,pagescounts the pages touched,siteWidemarks an issue of the whole site (robots.txt, a missing About page). Every fix is open: its pages and the way to fix it are inlist_site_issues.
Tips and patterns
- Blocking first. A
BLOCKINGfix always comes first: nothing else matters while engines cannot read the pages. - Fix the cause once. A fix with many
pagesusually comes from one template: read its pages withlist_site_issuesandfilters.check, then fix the template. - Monthly rhythm. The site is crawled once a month. Calling this tool more often returns the same diagnostic until the next crawl.
Related tools
- list_site_issues: the pages of each fix, with how to fix them.
- list_priority_pages: the plan, in the order to fix things.
- run_page_fix: the full to-do of one page.