Audit a website's AI visibility
audit_ai_visibilityChecks whether AI assistants and AI agents can understand and act on a business from its public website, and explains what gets in the way. Use it when the user asks things like: "Does AI understand my website?", "What would an AI think this company does?", "Why doesn't ChatGPT know what my company sells?", "Is my site ready for AI agents?", "Audit this site for machine readability", "Can an AI figure out the pricing and how to buy or become a customer?", "What information is missing for AI to understand this business?", or after they changed their site and want to check the result.
Returns a deterministic 0-100 AI Visibility Score across 8 dimensions (crawl access, business identity, offerings, pricing, structured data, trust, agent actionability, recommendation confidence), how AI would likely describe the business, what it could not determine, and the highest-impact issues, each with evidence (quotes and source URLs) and a one-line fix summary.
Free. It never changes the website: it reads public pages the way AI crawlers do (raw HTML, robots.txt, structured data, llms.txt). When no recent analysis exists it runs one and stores the report on CanAIReadMe. It reuses an analysis up to 7 days old unless fresh=true (free re-analysis once per 24 hours per site). A site it has not seen takes about 10 to 40 seconds; if the result has status "running", call again with the returned scan_id.
Do not use it to explain concepts (SEO, GEO, schema.org), for general SEO or marketing advice, to write content or build websites, to track brand mentions or rankings in AI answers (it does not measure those), or when no specific website is involved. To answer what a company does, sells or costs, use get_business_profile instead.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Website address or domain, for example acme.com or https://acme.com/. | |
| fresh | No | Re-read the site now instead of reusing a recent analysis. Free tier: once per 24 hours per site. | |
| detail | No | summary (default): top 5 issues. full: every issue. | |
| scan_id | No | Return a specific earlier analysis (the scan_id from a previous result), for example to poll a running one. | |
| purchase_id | No | With access_token from get_fix_package: fresh requests use one of the purchase's private re-scans. | |
| access_token | No | ||
| wait_seconds | No | How long to wait for a new analysis before returning status running. Default 25. | |
| max_age_hours | No | Oldest analysis you accept, in hours. Default 168 (7 days). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cache | Yes | ||
| error | Yes | ||
| notes | Yes | ||
| domain | Yes | ||
| status | Yes | ||
| scan_id | Yes | ||
| analysis | Yes | ||
| progress | Yes | ||
| freshness | Yes | ||
| report_url | Yes | ||
| next_actions | Yes | ||
| content_notice | Yes |