{"openapi":"3.1.0","info":{"title":"Unslop Me API","version":"1.0.0","description":"Scan a public website for AI-generated design tells. Free. Rate limit: 10 scans per hour per IP (HTTP 429 when exceeded). Scan results are kept about 7 days. MCP endpoint: POST /mcp (streamable HTTP).","contact":{"url":"https://unslop-me.vercel.app/agents"}},"servers":[{"url":"https://unslop-me-production.up.railway.app"}],"paths":{"/api/scan":{"post":{"operationId":"scan","summary":"Scan a URL (~20s)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","example":"https://myapp.lovable.app"}}}}}},"responses":{"200":{"description":"Scan result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"}}}},"400":{"description":"Bad or blocked URL"},"429":{"description":"Rate limited"},"502":{"description":"Site failed to load"},"504":{"description":"Site took >30s"}}}},"/api/scan/{id}":{"get":{"operationId":"getScan","summary":"Fetch a previous scan by id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{10}$"}}],"responses":{"200":{"description":"Scan result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"}}}},"404":{"description":"Expired or unknown"}}}},"/api/tells":{"get":{"operationId":"tells","summary":"The AI design tells checklist and scoring weights","responses":{"200":{"description":"Checklist"}}}},"/api/public":{"get":{"operationId":"publicScores","summary":"Public leaderboard scores","responses":{"200":{"description":"List of public score pages"}}}},"/mcp":{"post":{"operationId":"mcp","summary":"MCP JSON-RPC endpoint (streamable HTTP, stateless). Tools: unslop_scan(url), unslop_tells()","responses":{"200":{"description":"JSON-RPC response"}}}}},"components":{"schemas":{"Tell":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"points":{"type":"integer"},"evidence":{"type":"string"},"fix":{"type":"string"}}},"Scan":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"verdict":{"type":"string"},"tells":{"type":"array","items":{"$ref":"#/components/schemas/Tell"}},"fonts":{"type":"array","items":{"type":"string"}},"before":{"type":"string","format":"uri"},"after":{"type":"string","format":"uri"},"mobile":{"type":"string","format":"uri"},"redesign":{"type":"string","format":"uri"},"prompts":{"type":"object","description":"system, palette, fonts, lovable (builder prompt), cursor (code-editor prompt)"},"seconds":{"type":"number"}}}}}}