{
  "openapi": "3.1.0",
  "info": {
    "title": "SteadySite SSL & domain expiry check API",
    "version": "1.0.0",
    "description": "Free, keyless lookup of a website's SSL certificate expiry, domain registration expiry and HTTP status. Results are cached for 15 minutes; fresh lookups are limited to 15 per IP per 10 minutes. For ongoing monitoring with email alerts and client reports, sign up at https://steadysite.dev/login?domain=<domain>. The same check is available as an MCP tool (check_ssl_domain_expiry) at https://steadysite.dev/mcp.",
    "contact": {
      "name": "SteadySite",
      "url": "https://steadysite.dev/",
      "email": "steadysiteapp@gmail.com"
    }
  },
  "servers": [
    {
      "url": "https://steadysite.dev"
    }
  ],
  "externalDocs": {
    "description": "MCP server and docs",
    "url": "https://steadysite.dev/mcp"
  },
  "x-mcp-server": {
    "url": "https://steadysite.dev/mcp",
    "transport": "streamable-http"
  },
  "paths": {
    "/api/ssl-check": {
      "get": {
        "operationId": "checkSslAndDomainExpiry",
        "summary": "Check SSL certificate expiry, domain expiry and HTTP status for a domain",
        "description": "Use when a user asks when a site's SSL certificate or domain expires, who issued it, or whether the site is up.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "Hostname or URL, e.g. example.com or https://www.example.com/page",
            "schema": {
              "type": "string",
              "maxLength": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "headers": {
              "x-check-cache": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "hit",
                    "miss"
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "host": {
                      "type": "string",
                      "example": "example.com"
                    },
                    "domain": {
                      "type": "string",
                      "description": "Registrable domain used for the registration lookup."
                    },
                    "checked_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "ssl": {
                      "type": "object",
                      "properties": {
                        "state": {
                          "type": "string",
                          "enum": [
                            "ok",
                            "warn",
                            "bad",
                            "unknown"
                          ],
                          "description": "warn = expires within 30 days, bad = expired, unknown = no valid certificate found."
                        },
                        "expires_at": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date-time"
                        },
                        "days_left": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "issuer": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "error": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    },
                    "domain_registration": {
                      "type": "object",
                      "properties": {
                        "state": {
                          "type": "string",
                          "enum": [
                            "ok",
                            "warn",
                            "bad",
                            "unknown"
                          ]
                        },
                        "expires_at": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date-time"
                        },
                        "days_left": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "registrar": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "error": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    },
                    "http": {
                      "type": "object",
                      "properties": {
                        "state": {
                          "type": "string",
                          "enum": [
                            "ok",
                            "warn",
                            "bad"
                          ]
                        },
                        "status": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "response_ms": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "https": {
                          "type": "boolean"
                        },
                        "https_error": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "error": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid domain",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limited; retry after the number of seconds in Retry-After",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "headers": {
              "retry-after": {
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    }
  }
}