Report privately through GitHub's security advisories rather than a public issue. You'll get a reply within a week.
This matters more than usual here, because the tool asks you for keys to three
paid APIs. Every claim below is checkable in the source — the whole thing is a
few hundred lines, and src/engines.ts is the only file that
touches a key.
- Keys are read from environment variables, at call time.
OPENAI_API_KEY,GOOGLE_API_KEY,PERPLEXITY_API_KEY. Nothing is read at import time, so importing the library or running the MCP server never touches your environment unless you actually run an audit. - Each key is sent to that engine's own API and nowhere else. The complete
list of hosts this software will ever contact:
api.openai.com,generativelanguage.googleapis.com,api.perplexity.ai, and the site you asked it to audit. - Keys travel in headers, never in URLs. Including Google's, which its docs
permit as a
?key=query parameter — URLs end up in proxy logs, error messages and shell history in a way headers don't. - Nothing is stored or transmitted anywhere else. No telemetry, no analytics, no crash reporting, no phone-home, no account, no server component. There is nothing to opt out of.
- Keys are never written to output. Not in
--json, not in error messages.
Two runtime dependencies, both only used by the MCP server:
@modelcontextprotocol/sdk and zod.
The readiness audit requests, over plain HTTPS with no authentication:
- the homepage,
/robots.txt,/llms.txt,/sitemap.xml,- a
HEADon up to 10 same-origin links found on the homepage.
It identifies itself honestly as
crazyseo/1.0 (+https://github.com/d08m/crazyseo) and does not
retry with a spoofed browser user-agent — that was measured, didn't work, and is
documented in src/readiness.ts.
It respects nothing about robots.txt beyond reading it, because it fetches only your own site's public homepage and three well-known files — roughly what a browser does when you visit. It is not a crawler and has no queue.
Audit whatever you own or have permission to audit. Pointing it at a site to measure that site's AI visibility is the intended use; that's public information either way. Rate-limiting yourself is your responsibility.