{"service":"spectre-brain-api","docs":"/docs (interactive — click Authorize, username anything, password = BACKEND_PASSWORD)","endpoints":{"GET /health":"liveness + note count (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 /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)"}}