+Tenant isolation by design
Every client project has its own Supabase database, auth users and AI provider key. There is no shared fallback key, so a missing key fails loudly instead of billing another tenant, and a pre-deploy check blocks releases with uncovered tenants.
+Parallel, diff-aware deploys
Merging to main fans out one GitHub Actions job per tenant: run SQL migrations, deploy the MCP Edge Function and smoke-test tools/list. Code changes roll out to every tenant; registry-only changes deploy just the affected ones.
+Incremental docs ingestion
On every push, only changed markdown files are processed. Files are chunked by heading, enriched with category, tags and summary, embedded (1536-dim) and upserted atomically. Deleted files are purged, and pure renames move rows without re-embedding.
+Hybrid retrieval with reranking
Search embeds the query, runs a combined pgvector and full-text query, then reranks with an LLM. Results are de-noised and neighbouring chunks are stitched back together so answers keep their context.
+Layered MCP request path
Each JSON-RPC call is rate-limited, JWT-verified and checked against the token's project binding and access level (read, write, admin) before one of nine tools runs, including search, capture and knowledge-gap tracking.
+Self-serve access through OAuth 2.1
A custom OAuth 2.1 server in the admin portal issues project-scoped tokens to MCP clients. Assigning a user to a project provisions a real account in that tenant's database automatically.