{"ok":true,"site":{"host":"cyfix.vercel.app","url":"https://cyfix.vercel.app/","type":"live","desc":"Cyfix lets a human and an AI agent inspect and improve an authorized website together: a passive security scan, plain-language findings, remediations, and seven WebMCP tools an agent can call…","tools":[{"name":"scan_domain","kind":"act","impl":"imperative","description":"Run a passive, authorized-only security scan of a domain (HTTPS, security headers, cookie flags, basic public exposure checks). Requires that a human has already checked the on-page authorization box for this domain — never scans without it.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Bare domain to scan, e.g. example.com"}},"required":["domain"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/app?demo=1","/app"]},{"name":"explain_finding","kind":"act","impl":"imperative","description":"Explain, in plain language, why a specific finding from the current scan matters and what its real-world impact is.","inputSchema":{"type":"object","properties":{"findingId":{"type":"string","description":"The finding id from the current scan result"}},"required":["findingId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/app?demo=1","/app"]},{"name":"generate_fix","kind":"act","impl":"imperative","description":"Generate a concrete, copy-pasteable remediation snippet (config or header) for a specific finding from the current scan.","inputSchema":{"type":"object","properties":{"findingId":{"type":"string","description":"The finding id from the current scan result"}},"required":["findingId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/app?demo=1","/app"]},{"name":"export_report","kind":"act","impl":"imperative","description":"Export the current scan as a downloadable report. Format is 'json' or 'markdown'. Triggers a file download for the human and returns the report content for the agent.","inputSchema":{"type":"object","properties":{"format":{"type":"string","enum":["json","markdown"],"description":"Report format"}},"required":["format"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/app?demo=1","/app"]},{"name":"prepare_scan","kind":"act","impl":"imperative","description":"Propose a domain for the human to authorize. Writes the domain into the Cyfix dashboard (navigating there if the human is on another page) and leaves the authorization checkbox deliberately unticked. Call this first whenever scan_domain reports that authorization is missing — Cyfix never lets an agent authorize a scan on the human's behalf.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Bare domain to propose, e.g. example.com"}},"required":["domain"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/app?demo=1","/app"]},{"name":"list_findings","kind":"answer","impl":"imperative","description":"List findings from the current scan as compact records (id, title, severity, category, passed), optionally filtered by severity or narrowed to only the checks that failed. Use this to decide which finding to explain or fix next instead of re-running a scan.","inputSchema":{"type":"object","properties":{"severity":{"type":"string","enum":["critical","high","medium","low","info"],"description":"Only return findings at this severity"},"onlyFailed":{"type":"boolean","description":"Return only checks that did not pass. Defaults to true."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/app?demo=1","/app"]},{"name":"verify_fix","kind":"act","impl":"imperative","description":"Re-run the passive scan and report whether a specific finding is now resolved. Use this after a human has applied a remediation, to confirm the fix actually landed on the live site instead of assuming it did. Requires the same human authorization as any other scan.","inputSchema":{"type":"object","properties":{"findingId":{"type":"string","description":"The finding to verify. Omit to re-scan and report every check that changed."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/app?demo=1","/app"]}],"category":"Developer Tools","favicon":"/favicons/cyfix.vercel.app.svg","apiSurface":"spec","toolCount":7}}