Docs API reference Agent readiness Scan how ready a name of the zone is for AI agents, robots.txt rules, sitemap, llms.txt, markdown and structured data.
On this page The agent readiness scan checks over HTTPS how ready a name is for AI agents (robots.txt AI rules and Content-Signal, sitemap, llms.txt, markdown, structured data…) and stores the result.
# Get agent readiness
GET /v1/orgs/{org}/zones/{zone}/agent-readiness
Returns the last agent readiness scan of a name of the zone (404 if there is none). Without host, the most recent scan of any name.
Required role: readonly or higher.
# Parameters
Name In Type Required Description orgpath string (uuid) Yes Organization id. Every route checks that it is the token's organization (otherwise 404). zonepath string (uuid) Yes Zone id (see List zones ). hostquery string No A name of the zone; without it, the most recent scan of any name.
# Response
Field Type Description hoststring scanned_atstring (date-time) scoreinteger From 0 to 100. verdictstring levelsarray of object levels[].idstring Id. levels[].passedinteger levels[].totalinteger levels[].checksarray of object
# Errors
Status Description 400Malformed request (bad_request). 404Not found, or not visible to the token (not_found).
# Example
curl TypeScript Python
curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/agent-readiness?host=www.example.com" \
-H "Authorization: Bearer $OPENWAF_TOKEN" import { OpenWAF } from "./openwaf" ;
const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token from OPENWAF_TOKEN
const result = await owf.getAgentReadiness({
zone: "6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d" ,
host: "www.example.com"
});from openwaf import OpenWAF
owf = OpenWAF(base_url="https://dash.openwaf.dev" ) # token from OPENWAF_TOKEN
result = owf.get_agent_readiness(zone="6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d" , host="www.example.com" )
200
{
"host" : "www.example.com" ,
"scanned_at" : "2026-10-27T09:30:00Z" ,
"score" : 0 ,
"verdict" : "example" ,
"levels" : [
{
"id" : "example" ,
"passed" : 0 ,
"total" : 128 ,
"checks" : [
{}
]
}
]
}
# Scan agent readiness
POST /v1/orgs/{org}/zones/{zone}/agent-readiness/scan
Scans a name of the zone now over HTTPS and stores the result. The name is resolved and only public addresses are contacted, with time and size limits. Once per name per minute.
Required role: tech or higher.
# Parameters
Name In Type Required Description orgpath string (uuid) Yes Organization id. Every route checks that it is the token's organization (otherwise 404). zonepath string (uuid) Yes Zone id (see List zones ).
# Request body
Content type application/json. The body is optional.
Field Type Required Description hoststring No The zone apex by default.
# Response
Field Type Description hoststring scanned_atstring (date-time) scoreinteger From 0 to 100. verdictstring levelsarray of object levels[].idstring Id. levels[].passedinteger levels[].totalinteger levels[].checksarray of object
# Errors
Status Description 400Malformed request (bad_request). 403The token's role or limits do not allow it (forbidden). 404Not found, or not visible to the token (not_found). 429Too many requests (rate_limited); wait Retry-After seconds. 503Not available right now (unavailable); retry later.
# Example
curl TypeScript Python
curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/zones/6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d/agent-readiness/scan" \
-H "Authorization: Bearer $OPENWAF_TOKEN" \
-H "Content-Type: application/json" \
--data '{
"host" : "www.example.com"
}'import { OpenWAF } from "./openwaf" ;
const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token from OPENWAF_TOKEN
const result = await owf.scanAgentReadiness({
zone: "6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d" ,
body: {
host: "www.example.com"
}
});from openwaf import OpenWAF
owf = OpenWAF(base_url="https://dash.openwaf.dev" ) # token from OPENWAF_TOKEN
result = owf.scan_agent_readiness(
zone="6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d" ,
body={
"host" : "www.example.com"
},
)
200
{
"host" : "www.example.com" ,
"scanned_at" : "2026-10-27T09:30:00Z" ,
"score" : 0 ,
"verdict" : "example" ,
"levels" : [
{
"id" : "example" ,
"passed" : 0 ,
"total" : 128 ,
"checks" : [
{}
]
}
]
} PreviousAI agents Next Egress