Security
Identity and access
Guest creation flow uses /api/auth/guest?redirectUrl=... to avoid client-side signIn() CSRF.
MCP token isolation
Properties:
- Tokens are minted with
randomBytes(24).toString("base64url"). - Only the SHA-256 hash is stored — the raw token is shown once on the convert result page.
- A token is scoped to a single project; it cannot read any other project, even on the same account.
- Anyone with the URL + token can read that project's crawled docs. Treat the token like a read-only API key.
- Tokens can be rotated by deleting the project and re-running the conversion.
What leaves your machine
Web search and Jina are optional. With no keys set, only Source docs, ASI1, and Supabase are contacted.
Headers and proxy
proxy.tsgates everything except the public-by-design routes:/,/login,/register,/pricing,/demo,/api/auth,/ping,/chat,/docs,/api/mcp./api/mcp/[projectId]/mcpaccepts the Bearer token viaAuthorization, falls back toX-Doc2MCP-Token, then to a?token=query param for clients that cannot set headers.- Guest sessions are cookie-only, signed with
AUTH_SECRET.
Reporting
Found a security issue? Email . Please do not file a public GitHub issue.