Skip to content

Security: d08m/crazyseo

Security

SECURITY.md

Security

Reporting a vulnerability

Report privately through GitHub's security advisories rather than a public issue. You'll get a reply within a week.

What this tool does with your API keys

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.

What it fetches from the site you audit

The readiness audit requests, over plain HTTPS with no authentication:

  • the homepage,
  • /robots.txt, /llms.txt, /sitemap.xml,
  • a HEAD on 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.

Scope

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.

There aren't any published security advisories