{
  "openapi": "3.1.0",
  "info": {
    "title": "Syrenka Agent API",
    "version": "0.2.0",
    "description": "Text-only agent. Speech happens on the client."
  },
  "servers": [
    {
      "url": "http://mateusz-desktop.tail96606f.ts.net"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "paths": {
    "/health": {
      "get": {
        "summary": "Liveness. Returns 200 even while warming so a container healthcheck does not restart-loop during first-boot indexing.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/status": {
      "get": {
        "summary": "Agent state, registered tools, live sessions and host metrics.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        }
      }
    },
    "/tools": {
      "get": {
        "summary": "Every registered tool with the JSON Schema the model sees.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        }
      }
    },
    "/history": {
      "get": {
        "summary": "Your own recent turns. Scoped to the calling token; you cannot read anyone else's.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        }
      }
    }
  }
}