{
  "openapi": "3.1.0",
  "info": {
    "title": "AICompatible AI-readiness API",
    "version": "1.0.0",
    "description": "Scan a public website and get an AI-readiness score, AI-bot robots.txt access, structured-data status and the reasons for every deduction. Free, no API key. Scoring rules: https://www.aiocompatible.com/methodology An MCP server (Streamable HTTP) with tools check_ai_readiness and check_bot_access is available at https://www.aiocompatible.com/mcp"
  },
  "servers": [
    {
      "url": "https://aiocompatible-com.vercel.app"
    }
  ],
  "paths": {
    "/api/v1/analyze": {
      "get": {
        "operationId": "analyzeSite",
        "summary": "Check how ready a website is for AI search engines and AI crawlers",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Domain or URL of a public website, e.g. example.com"
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "generic",
                "blog",
                "ecommerce",
                "saas",
                "corporate"
              ],
              "default": "generic"
            },
            "description": "Site category; changes which schema types are treated as required."
          }
        ],
        "responses": {
          "200": {
            "description": "Scan result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "domain": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    },
                    "overallScore": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100,
                      "description": "0.35*crawlability + 0.35*parseability + 0.30*citationReadiness"
                    },
                    "subScores": {
                      "type": "object",
                      "properties": {
                        "crawlability": {
                          "type": "integer"
                        },
                        "parseability": {
                          "type": "integer"
                        },
                        "citationReadiness": {
                          "type": "integer"
                        }
                      }
                    },
                    "botsStatus": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "bot": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "Allowed",
                              "Blocked"
                            ]
                          }
                        }
                      }
                    },
                    "schemaStatus": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "llmsTxtExists": {
                      "type": "boolean"
                    },
                    "sitemapExists": {
                      "type": "boolean"
                    },
                    "explainScore": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "metric": {
                            "type": "string"
                          },
                          "points": {
                            "type": "number"
                          },
                          "comment": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "confidenceRating": {
                      "type": "integer"
                    },
                    "cloudflareProtected": {
                      "type": "boolean"
                    },
                    "methodologyVersion": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid or private URL"
          }
        }
      }
    },
    "/api/check": {
      "get": {
        "operationId": "checkSite",
        "summary": "Compact AI-readiness summary with issues and fixes",
        "servers": [
          {
            "url": "https://www.aiocompatible.com"
          }
        ],
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Domain or URL of a public website"
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ],
              "default": "json"
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "generic",
                "blog",
                "ecommerce",
                "saas",
                "corporate"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Summary (JSON or Markdown)"
          },
          "400": {
            "description": "Invalid or private URL"
          },
          "429": {
            "description": "Rate limit: 30 requests per minute per IP"
          }
        }
      }
    }
  }
}