agentic‑readiness docs
/
Scan at scale Blog Build one › Run a scan ›

DocsCapabilitiesOpenAPI description

OpenAPI description

A machine-readable contract for the site's API.

adoption Web baselinetrend ► flatchecked once per sitechecks 10verified 2026-10-05
Set up OpenAPI description on your site How to serve a machine-readable contract for your API, and where agents look for it.
Free Publish an OpenAPI description

Why an agent cares

It is the difference between an agent guessing at an API and calling it correctly first time. Most of what we flag is optional per the spec and load-bearing for an agent, such as a missing operationId or an absent server URL.

Adoption

Web baseline. Standard equipment on the web. Its absence is the exception rather than its presence. For this one in particular, the format is settled, but whether a site publishes its contract at all varies.

Direction of travel: ► flat, as at .

The de facto standard for describing REST APIs. The variable is not adoption but whether the contract is served publicly.

What we check

Absence is never a finding. Every check below runs only when this technology is detected, so a site that has not adopted this is not assessed on it and appears in no report. 10 of these 12 can fail it. In Lumar these appear once per site, in the site-wide results of each crawl.
CheckSeverityRaisesOn whose authority
OpenAPI Invalid DocumenthighusabilityLumar readiness bar, beyond OpenAPI Specification
OpenAPI Insecure OAuth URLhighusability, security (CWE-319)specification: OpenAPI Specification, The OAuth 2.0 Authorization Framework, OpenID Connect Discovery 1.0
OpenAPI Deprecated OAuth Flowhighusability, security (CWE-522)specification: Best Current Practice for OAuth 2.0 Security
OpenAPI Internal Endpointmediumusability, security (CWE-200)Lumar readiness bar
OpenAPI Invalid VersionmediumusabilityLumar readiness bar, beyond OpenAPI Specification
OpenAPI Missing operationIdmediumusabilityLumar readiness bar, beyond OpenAPI Specification
OpenAPI Undescribed OperationmediumusabilityLumar readiness bar, beyond OpenAPI Specification
OpenAPI Duplicate operationIdmediumconformance, usabilityspecification: OpenAPI Specification
OpenAPI Insecure Server URLmediumusability, security (CWE-319)Lumar readiness bar, beyond OpenAPI Specification
OpenAPI Untyped SchemamediumusabilityLumar readiness bar, beyond OpenAPI Specification
OpenAPI Unresolved Referenceinformationalnothingspecification: OpenAPI Specification
OpenAPI Partially Assessedcoverage notenothingour own coverage

Examples

Both run through the same checks as a live scan: the first passes, the second is flagged.

correctjson
{
  "openapi": "3.1.0",
  "info": { "title": "Example Catalog API", "version": "1.0.0" },
  "servers": [{ "url": "https://api.example.com/v1" }],
  "paths": {
    "/pets": {
      "get": {
        "operationId": "listPets",
        "summary": "List the pets in the catalog",
        "responses": {
          "200": {
            "description": "A list of pets",
            "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object" } } } }
          }
        }
      },
      "post": {
        "operationId": "createPet",
        "summary": "Add a pet to the catalog",
        "requestBody": {
          "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pet" } } }
        },
        "responses": {
          "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object" } } } }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "petsOAuth": {
        "type": "oauth2",
        "flows": { "authorizationCode": { "authorizationUrl": "https://auth.example.com/authorize", "tokenUrl": "https://auth.example.com/token", "scopes": {} } }
      }
    }
  }
}
present but wrongjson
{
  "openapi": "3.1.0",
  "info": { "title": "Broken Catalog API", "version": "1.0.0" },
  "servers": [{ "url": "http://api.example.com/v1" }],
  "security": [{ "legacyOAuth": [] }],
  "paths": {
    "/pets": {
      "get": {
        "responses": {
          "200": {
            "description": "A list of pets",
            "content": { "application/json": { "schema": {} } }
          }
        }
      },
      "post": {
        "requestBody": { "content": { "application/json": { "schema": {} } } },
        "responses": { "201": { "description": "Created" } }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "legacyOAuth": {
        "type": "oauth2",
        "flows": { "password": { "tokenUrl": "http://auth.example.com/token", "scopes": {} } }
      }
    }
  }
}

Specifications

DocumentRevisionKind
OpenAPI SpecificationVersion 3.2.1 (any 3.x accepted)specification
RFC 6749 — The OAuth 2.0 Authorization FrameworkPublished RFCspecification
RFC 9700 — Best Current Practice for OAuth 2.0 SecurityPublished RFCspecification
OpenID Connect Discovery 1.0Version 1.0specification

Last re-read against the published documents: .