{
  "openapi": "3.1.0",
  "info": {
    "title": "Aureum Website-MCP-Server, HTTP-Schnittstelle",
    "version": "1.2.0",
    "description": "Beschreibt die HTTP-Hülle des MCP-Endpunkts der Website aureum-tech.com (Model Context Protocol, Transport Streamable HTTP, Nachrichten nach JSON-RPC 2.0). Welche Werkzeuge es gibt und welche Eingaben sie verlangen, meldet der Server selbst über die Methode tools/list; eine Übersicht steht in der Server Card unter /.well-known/mcp/server-card.json. Ohne Anmeldung, nur lesend, mit Ratenbremsen je Besucher. Rechenlastige Werkzeuge brechen nach 10 Sekunden ab.",
    "contact": { "name": "Aureum Technology GmbH", "url": "https://aureum-tech.com/kontakt", "email": "info@aureum-tech.com" }
  },
  "servers": [{ "url": "https://aureum-tech.com" }],
  "security": [],
  "externalDocs": {
    "description": "MCP-Spezifikation, Transport Streamable HTTP",
    "url": "https://modelcontextprotocol.io/specification/2025-06-18/basic/transports"
  },
  "paths": {
    "/mcp": {
      "post": {
        "operationId": "mcpNachrichtSenden",
        "summary": "Eine JSON-RPC-2.0-Nachricht senden",
        "description": "Der Accept-Kopf muss application/json und text/event-stream nennen. Die erste Anfrage ist initialize ohne Mcp-Session-Id; deren Antwort trägt den Kopf Mcp-Session-Id, und alle folgenden Anfragen schicken ihn mit. Danach notifications/initialized senden, dann tools/list und tools/call.",
        "parameters": [
          { "$ref": "#/components/parameters/SessionId" },
          { "$ref": "#/components/parameters/ProtokollVersion" }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/JsonRpcNachricht" },
              "examples": {
                "initialize": { "value": { "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-06-18", "capabilities": {}, "clientInfo": { "name": "beispiel-client", "version": "1.0.0" } } } },
                "werkzeugliste": { "value": { "jsonrpc": "2.0", "id": 2, "method": "tools/list" } },
                "werkzeugaufruf": { "value": { "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "werkzeug_selektor_rechner", "arguments": { "eingabe": "transfer(address,uint256)" } } } }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Antwort auf eine JSON-RPC-Anfrage als SSE-Strom; die data-Zeilen enthalten JSON-RPC-Nachrichten.",
            "headers": { "Mcp-Session-Id": { "description": "Nur in der Antwort auf initialize.", "schema": { "type": "string" } } },
            "content": { "text/event-stream": { "schema": { "type": "string" } } }
          },
          "202": { "description": "Notification angenommen, kein Rumpf." },
          "400": { "description": "Kaputtes JSON (-32700) oder Anfrage ohne Sitzung (-32000).", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JsonRpcNachricht" } } } },
          "404": { "description": "Mcp-Session-Id unbekannt oder abgelaufen (-32001, nach 30 Minuten ohne Aktivität). Neu mit initialize beginnen.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JsonRpcNachricht" } } } },
          "406": { "description": "Accept nennt nicht beide Typen application/json und text/event-stream." },
          "413": { "description": "Rumpf zu groß." },
          "503": { "description": "Zu viele gleichzeitige Sitzungen.", "headers": { "Retry-After": { "schema": { "type": "integer" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Fehler" } } } }
        }
      },
      "get": {
        "operationId": "mcpStromOeffnen",
        "summary": "SSE-Strom für Nachrichten des Servers, nur mit Mcp-Session-Id",
        "parameters": [{ "$ref": "#/components/parameters/SessionId" }],
        "responses": {
          "200": { "description": "SSE-Strom.", "content": { "text/event-stream": { "schema": { "type": "string" } } } },
          "404": { "description": "Sitzung unbekannt oder abgelaufen." },
          "405": { "description": "Ohne Mcp-Session-Id.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Fehler" } } } }
        }
      },
      "delete": {
        "operationId": "mcpSitzungBeenden",
        "summary": "Sitzung beenden, mit Mcp-Session-Id",
        "parameters": [{ "$ref": "#/components/parameters/SessionId" }],
        "responses": {
          "200": { "description": "Sitzung beendet." },
          "404": { "description": "Sitzung unbekannt oder abgelaufen." },
          "405": { "description": "Ohne Mcp-Session-Id.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Fehler" } } } }
        }
      }
    },
    "/mcp/health": {
      "get": {
        "operationId": "mcpZustand",
        "summary": "Antwortet der MCP-Prozess?",
        "responses": {
          "200": {
            "description": "Der Prozess läuft. Mehr sagt die Antwort nicht.",
            "content": {
              "application/json": {
                "schema": { "type": "object", "required": ["status", "server", "version"], "properties": { "status": { "const": "ok" }, "server": { "type": "string" }, "version": { "type": "string" } } },
                "example": { "status": "ok", "server": "aureum-website", "version": "1.2.0" }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "SessionId": { "name": "Mcp-Session-Id", "in": "header", "required": false, "description": "Von initialize vergeben, danach bei jeder Anfrage Pflicht.", "schema": { "type": "string" } },
      "ProtokollVersion": { "name": "MCP-Protocol-Version", "in": "header", "required": false, "description": "Die bei initialize ausgehandelte Version, nach initialize bei jeder Anfrage.", "schema": { "type": "string" }, "example": "2025-06-18" }
    },
    "schemas": {
      "JsonRpcNachricht": {
        "type": "object",
        "required": ["jsonrpc"],
        "properties": {
          "jsonrpc": { "const": "2.0" },
          "id": { "type": ["string", "integer", "null"] },
          "method": { "type": "string", "examples": ["initialize", "notifications/initialized", "tools/list", "tools/call"] },
          "params": { "type": "object" },
          "result": {},
          "error": { "$ref": "#/components/schemas/JsonRpcFehler" }
        }
      },
      "JsonRpcFehler": {
        "type": "object",
        "required": ["code", "message"],
        "properties": { "code": { "type": "integer" }, "message": { "type": "string" }, "data": {} }
      },
      "Fehler": { "type": "object", "required": ["fehler"], "properties": { "fehler": { "type": "string" } } }
    }
  }
}
