{"ok":true,"site":{"host":"slop-check-nine.vercel.app","url":"https://slop-check-nine.vercel.app/","type":"live","desc":"Catch the patterns AI code uses to look finished without being finished.","tools":[{"name":"list_rules","kind":"answer","impl":"imperative","description":"List every slop-check rule with its scoring weight and rationale. Deterministic; no scan required. Use this to explain what the scanner looks for before running it.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"string"},"weight":{"type":"number"},"why":{"type":"string"}}}}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"explain_rule","kind":"answer","impl":"imperative","description":"Explain one slop-check rule: what it detects, why it counts as slop, and how much weight a hit carries. Use before disputing a finding, so the verdict is informed.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"ruleId":{"type":"string","description":"Rule id, e.g. apology-comments, empty-catch, swallowed-error."}},"required":["ruleId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"scan_repository","kind":"act","impl":"imperative","description":"Scan a public GitHub repository or pull request for AI-slop patterns and show the result on the page. Accepts https://github.com/owner/repo, /tree/branch, or /pull/123. Runs entirely in the browser — no code is uploaded anywhere.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Public github.com repository, branch, or pull request URL."}},"required":["url"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"score":{"type":"integer","description":"0–100. Higher is more slop."},"grade":{"type":"string","enum":["A","B","C","D","F"]},"label":{"type":"string"},"filesScanned":{"type":"integer"},"linesScanned":{"type":"integer"},"skippedFiles":{"type":"integer"},"findingCount":{"type":"integer"},"groupCount":{"type":"integer"},"ruleHits":{"type":"object","additionalProperties":{"type":"integer"}}},"required":["score","grade","label","findingCount"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"scan_diff","kind":"act","impl":"imperative","description":"Scan a unified diff for AI-slop patterns and show the result on the page. Use this for review of a patch or working-tree change rather than a whole repository; only changed lines are scored.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"diff":{"type":"string","description":"Unified diff text, as produced by `git diff`."}},"required":["diff"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"score":{"type":"integer","description":"0–100. Higher is more slop."},"grade":{"type":"string","enum":["A","B","C","D","F"]},"label":{"type":"string"},"filesScanned":{"type":"integer"},"linesScanned":{"type":"integer"},"skippedFiles":{"type":"integer"},"findingCount":{"type":"integer"},"groupCount":{"type":"integer"},"ruleHits":{"type":"object","additionalProperties":{"type":"integer"}}},"required":["score","grade","label","findingCount"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Developer Tools","apiSurface":"spec","toolCount":4}}