{"service":"spectre-brain-api","docs":"/docs (interactive — click Authorize, username anything, password = BACKEND_PASSWORD)","endpoints":{"GET /health":"liveness + note/chunk counts + embedding coverage (no auth)","GET /api/search?q=...":"hybrid retrieval: text rank + wikilink graph expansion","GET /api/notes/{slug}":"full note incl. markdown content","GET /api/graph/{slug}":"outlinks + backlinks","GET /api/ops/{name}":"ops tables + v_* formula views (pre-computed, zero LLM)","POST /api/ops/metrics":"collector write path","GET /api/actions?status=staged":"the approval gate","POST /api/actions/{id}/approve|reject":"your tap","GET /api/connections":"connector registry — connect-state per provider, never secrets","POST /api/connections/{provider}":"store api-key/config into the encrypted vault","GET /api/connect/meta|google/start":"OAuth onboarding (Composio-free product path)","GET /api/digest/latest":"zero-LLM weekly digest (site, franchises, ads, email, anomalies)","GET /api/anomalies?days=30":"series scored against their own trailing window","POST /api/jobs":"enqueue collector/analysis jobs; GET /api/jobs = recent runs","GET|POST /api/dashboard/{state|content|inbox|posts}":"console state — Postgres is the system of record","GET /api/agents":"brain-repo agents/skills registry + live status","POST /api/agents/{name}/run":"queue an agent run (a Claude Code executor claims it)","GET /api/agents/runs":"run history; POST .../runs/claim + .../runs/{id}/complete = executor loop","POST /api/agent/chat":"the agent (503 until ANTHROPIC_API_KEY is set)","POST /api/auth/signup|login|logout, GET /api/auth/me|setup":"people and sessions (X-Spectre-Session)","GET|POST /api/people":"the CEO adds people and sets roles","GET|POST /api/tickets":"tickets, and the questions asked on them","GET|POST /api/ask":"Ask AI: a question is stored, the cloud worker answers","GET /api/replies":"AI reply drafts in review, scheduled, sent; edit and ask for changes","GET /api/knows":"what the AI knows: lessons and facts (CEO writes)","/api/worker/*":"the cloud worker's own door (Bearer WORKER_TOKEN, nothing else opens it)"}}