{"openapi":"3.1.0","info":{"title":"mcp-me","summary":"Agent-readiness scanner for public websites","description":"Prüft, ob KI-Agenten eine öffentliche Website finden, verstehen und nutzen können. Gleiche Funktionen als REST-API und als MCP-Server unter /mcp.","version":"0.1.0"},"paths":{"/api/v1/scans":{"post":{"tags":["scans"],"summary":"Scan starten","description":"Startet die Prüfung einer öffentlichen URL. Das Ergebnis holt man mit GET /api/v1/scans/{scan_id} ab.","operationId":"start_scan_api_v1_scans_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanReport"}}}},"422":{"description":"URL nicht erlaubt"},"429":{"description":"Zu viele Prüfungen"}}}},"/api/v1/scans/{scan_id}":{"get":{"tags":["scans"],"summary":"Status und Bericht","operationId":"get_scan_api_v1_scans__scan_id__get","parameters":[{"name":"scan_id","in":"path","required":true,"schema":{"type":"string","title":"Scan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanReport"}}}},"404":{"description":"Unbekannte oder abgelaufene Prüfung"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scans/{scan_id}/fix-kit":{"get":{"tags":["scans"],"summary":"Fix-Kit als JSON","description":"Dateien für Coding-Agents: AGENTS.md, llms.txt, robots.txt, Schema.org-Beispiele u. a.","operationId":"fix_kit_api_v1_scans__scan_id__fix_kit_get","parameters":[{"name":"scan_id","in":"path","required":true,"schema":{"type":"string","title":"Scan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FixKit"}}}},"404":{"description":"Unbekannte Prüfung"},"409":{"description":"Noch nicht fertig"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scans/{scan_id}/fix-kit.zip":{"get":{"tags":["scans"],"summary":"Fix-Kit als ZIP","operationId":"fix_kit_zip_api_v1_scans__scan_id__fix_kit_zip_get","parameters":[{"name":"scan_id","in":"path","required":true,"schema":{"type":"string","title":"Scan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/zip":{}}},"404":{"description":"Not Found"},"409":{"description":"Conflict"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scans/{scan_id}/recheck/{finding_id}":{"post":{"tags":["scans"],"summary":"Einzelnen Check erneut prüfen","description":"Holt die Seiten erneut ab und bewertet nur diesen Check neu. Der Score im Bericht wird aktualisiert.","operationId":"recheck_api_v1_scans__scan_id__recheck__finding_id__post","parameters":[{"name":"scan_id","in":"path","required":true,"schema":{"type":"string","title":"Scan Id"}},{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Finding"}}}},"404":{"description":"Prüfung oder Check unbekannt"},"429":{"description":"Noch nicht fertig"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/checks":{"get":{"tags":["scans","checks"],"summary":"Check-Katalog","operationId":"list_checks_api_v1_checks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CheckInfo"},"type":"array","title":"Response List Checks Api V1 Checks Get"}}}}}}},"/healthz":{"get":{"tags":["system"],"summary":"Liveness and readiness","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Healthz Healthz Get"}}}}}}}},"components":{"schemas":{"CheckInfo":{"properties":{"id":{"type":"string","title":"Id"},"category":{"type":"string","title":"Category"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"max_points":{"type":"integer","title":"Max Points"}},"type":"object","required":["id","category","label","description","max_points"],"title":"CheckInfo"},"Finding":{"properties":{"id":{"type":"string","title":"Id","description":"Stable check id, e.g. llms_txt"},"category":{"type":"string","title":"Category"},"label":{"type":"string","title":"Label"},"status":{"$ref":"#/components/schemas/Status"},"points":{"type":"integer","title":"Points"},"max_points":{"type":"integer","title":"Max Points"},"detail":{"type":"string","title":"Detail","description":"Deutsche Erklärung des Befunds"},"evidence":{"items":{"type":"string"},"type":"array","title":"Evidence","default":[]},"fix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fix","description":"Kurzer Hinweis, was zu tun ist"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority","description":"1 = zuerst beheben"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation","description":"Ergänzende deutsche Erklärung des Sprachmodells (optional)"}},"type":"object","required":["id","category","label","status","points","max_points","detail"],"title":"Finding"},"FixKit":{"properties":{"scan_id":{"type":"string","title":"Scan Id"},"files":{"additionalProperties":{"type":"string"},"type":"object","title":"Files","description":"Dateien des Fix-Kits: relativer Pfad -> Inhalt (UTF-8-Text, deutsch)"}},"type":"object","required":["scan_id","files"],"title":"FixKit"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LlmInfo":{"properties":{"used":{"type":"boolean","title":"Used","default":false},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Usd"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"LlmInfo"},"PageInfo":{"properties":{"url":{"type":"string","title":"Url"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["url"],"title":"PageInfo"},"ScanReport":{"properties":{"scan_id":{"type":"string","title":"Scan Id"},"url":{"type":"string","title":"Url"},"state":{"$ref":"#/components/schemas/ScanState"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"grade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grade"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"findings":{"items":{"$ref":"#/components/schemas/Finding"},"type":"array","title":"Findings","default":[]},"pages":{"items":{"$ref":"#/components/schemas/PageInfo"},"type":"array","title":"Pages","default":[]},"signals":{"$ref":"#/components/schemas/Signals","default":{"has_login_hint":false,"has_signup_hint":false,"has_payment_hint":false,"has_contact":false,"has_imprint":false,"json_ld_types":[],"form_count":0,"agent_interfaces":[]}},"llm":{"$ref":"#/components/schemas/LlmInfo","default":{"used":false}},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["scan_id","url","state","created_at","expires_at"],"title":"ScanReport"},"ScanRequest":{"properties":{"url":{"type":"string","maxLength":2048,"title":"Url","description":"Öffentliche Adresse der Website, z. B. https://www.example.de","examples":["https://www.example.de"]}},"type":"object","required":["url"],"title":"ScanRequest"},"ScanState":{"type":"string","enum":["queued","running","done","failed"],"title":"ScanState"},"Signals":{"properties":{"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"has_login_hint":{"type":"boolean","title":"Has Login Hint","default":false},"has_signup_hint":{"type":"boolean","title":"Has Signup Hint","default":false},"has_payment_hint":{"type":"boolean","title":"Has Payment Hint","default":false},"has_contact":{"type":"boolean","title":"Has Contact","default":false},"has_imprint":{"type":"boolean","title":"Has Imprint","default":false},"json_ld_types":{"items":{"type":"string"},"type":"array","title":"Json Ld Types","default":[]},"form_count":{"type":"integer","title":"Form Count","default":0},"bot_protection":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Protection"},"agent_interfaces":{"items":{"type":"string"},"type":"array","title":"Agent Interfaces","default":[]}},"type":"object","title":"Signals"},"Status":{"type":"string","enum":["ok","fehlt","blockiert","fehler","info"],"title":"Status"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}