Site
get_site_audit
- Plan
- Grow and above
- Rate cost
- 1 unit
Try asking
“Is anything on our site stopping AI assistants from citing us?”
Site
Try asking
“Is anything on our site stopping AI assistants from citing us?”
Passed as the tool call's arguments.
project_idstringrequiredThe project to read, from list_projects.
The same object as Get the site audit, returned as structured output.
website_urlstringnullableThe site audited.
auditedbooleanFalse when the project has no site, or no audit has run yet. Every field below is then empty.
retrievability_scorenumbernullableThe audit's overall score after caps, 0–100 — the same number as scorecard.score. The name is historical.
ai_botsobject[]What robots.txt says about each AI crawler at the site root. Key on bot; the order isn't guaranteed.
botstringCrawler user-agent, e.g. OAI-SearchBot, PerplexityBot, GPTBot.
allowedbooleanWhether it may fetch the site.
server_renderedbooleannullableWhether the copy is in the HTML rather than added by JavaScript.
has_structured_databooleannullableWhether Schema.org markup was found.
has_llms_txtbooleannullableWhether the site publishes an llms.txt.
generated_llms_txtstringnullableAn llms.txt written for the site, ready to publish.
pages_auditedintegerPages read. 0 means the homepage only.
coveragenumbernullableShare of the audit that could be measured, 0–1.
findingsobject[]The fix list.
checkstringWhich check, e.g. ai_crawler_access.
statusstringHow it went.
Values:passwarnfail
impactstringHow much it costs you.
Values:highmediumlow
detailstringWhat was found.
recommendationstringnullableWhat to do.
scorecardobjectnullableThe graded scorecard. Null on audits scored with the older model.
scorenumberThe published score, 0–100: raw_score held down by any cap that applies.
raw_scorenumberPoints earned as a share of the weight actually measured, 0–100.
coveragenumberShare of the weight that could be measured, 0–1.
capped_byobjectnullableThe cap actually holding the score down, if any.
idstringWhich cap, e.g. citation_crawler_blocked, js_only.
ceilingnumberThe highest score possible while it applies, 0–100.
reasonstringWhy it applies.
capsobject[]Every cap considered, whether or not it bites.
pillarsobject[]The three pillars: retrievability (weight 30), answerability (40), authority (30).
idstringPillar.
Values:retrievabilityanswerabilityauthority
labelstringIts name.
questionstringThe question it answers.
weightnumberIts share of the score.
pointsnumberPoints earned.
sharenumberPoints as a share of the weight counted, 0–1.
coveragenumberShare of the pillar that could be measured, 0–1.
dimensionsobject[]The eleven graded checks behind the pillars.
idstringe.g. ai_crawler_access, answer_structure, entity_grounding.
labelstringIts name.
pillarstringWhich pillar it belongs to.
weightnumberIts weight in the score.
scorenumbernullableHow it did, 0–1. Null when it couldn't be measured.
pointsnumberweight × score.
statusstringpass from 0.8, partial from 0.4, unknown when unmeasured.
Values:passpartialfailunknown
detailstringWhat was found.
recommendationstringnullableWhat to do.
impactstringHow much it matters.
Values:highmediumlow
blamestringnullablesite when the site blocked the check, platform when we don't have the data yet. Null when measured.
Values:siteplatform
evidence_jsonstringThe raw evidence, as a JSON string.
| 404 not_found | The project or item doesn't exist in this workspace. A project from another workspace also returns 404, never 403. |
| 422 invalid_request | A parameter or body field is missing or has the wrong type or value. The message names the field. Also returned when a write would pass the plan's prompt limit. |
| 401 unauthorized | No key was sent, or the key is unknown, revoked or expired, or the member who created it has left the workspace or been deactivated. |
| 402 plan_required | The workspace's plan doesn't include API access. It's included on Grow, Scale and Custom. |
| 403 workspace_not_approved | The workspace is still waiting for approval, or wasn't approved. |
| 429 rate_limited | Too many requests this minute. Wait for the number of seconds in the `Retry-After` header, then retry. |
Every code, and what to retry, is in Errors.
Failures arrive as a tool error — isError: true with code: message as text. See Using the tools.