{"service":"alterspective-rag","version":"1.128.4","endpoints":{"health":"GET  /health","ui":"GET  /ui   (test console)","metrics":"GET  /metrics","ingest":"POST /ingest","pdf":"POST /ingest/pdf","document":"POST /ingest/document  (Office/image/HTML/text → markdown; ≤ data:URI cap)","collections":"GET    /collections","collections/:name":"GET    /collections/:name","delete-collection":"DELETE /collections/:name","bulk-delete":"POST /ingest/bulk-delete  (metadata-filter chunk delete; external-docs rollback)","relations":"PUT    /collections/:collection/relations","relations/status":"GET    /collections/:collection/relations/status","search":"POST /search","article":"GET  /article/<path>  (verbatim article text)","articles":"POST /articles  (batch fetch)","skills":"GET  /skills  (Agent Skills catalogue)","skills/:id":"GET  /skills/<id>  (skill metadata; +/content for markdown)","agent/bootstrap":"GET  /agent/bootstrap  (authenticated same-commit agent policy bundle)","ask":"POST /ask","ask/stream":"POST /ask/stream  (SSE)","cache/stats":"GET  /cache/stats","chat":"POST /v1/chat/completions  (stream: true supported)","embeddings":"POST /v1/embeddings  (OpenAI-compatible; NIM-backed, input_type extension)","graph/explain":"GET    /graph/explain?node=<id-or-label>","graph/neighbors":"GET    /graph/neighbors?node=<id-or-label>","graph/hubs":"GET    /graph/hubs?limit=<1..200>","graph/community":"GET    /graph/community?id=<int>","related":"POST /related  (related-document discovery)","feedback":"POST /feedback  (+ GET /feedback/stats, /feedback/report, /feedback/by-source)","contributions":"POST /contributions  (Lane 2 knowledge contribution; GET list/detail, :id actions)","mcp":"POST /mcp  (Streamable HTTP; OAuth 2.1 or Bearer MCP_API_KEY; tool discovery via tools/list)","analytics/dashboard":"GET  /admin/analytics  (admin; query-audit dashboard UI)","analytics/queries":"GET  /analytics/queries  (admin; paged query log + drill-down)","analytics/queries/:id":"GET  /analytics/queries/<id>  (admin; single-query drill-down)","analytics/gaps":"GET  /analytics/gaps  (admin; knowledge gaps)","analytics/demand":"GET  /analytics/demand  (admin; top demand + response value)","analytics/latency":"GET  /analytics/latency  (admin; latency + why slow)","analytics/actors":"GET  /analytics/actors  (admin; usage & systems)","analytics/quality":"GET  /analytics/quality  (admin; response quality quadrant)","analytics/performance":"GET  /analytics/performance  (admin; provider performance)","analytics/insights":"GET  /analytics/insights  (admin; weekly AI-insights digest)","analytics/loop":"GET  /analytics/loop  (admin; loop closure)","analytics/skill-candidates":"GET  /analytics/skill-candidates  (admin; skill-demand gaps)","analytics/skill-usage":"GET  /analytics/skill-usage  (admin; unused skills)","analytics/corpus-map":"GET  /analytics/corpus-map  (admin; KB embedding map artefact)","analytics/corpus-map/community/:id":"GET  /analytics/corpus-map/community/<id>  (admin; community summary)"},"features":{"communitySummaryLane":{"enabled":true,"flag":"RAG_COMMUNITY_SUMMARY_LANE","description":"Corpus-wide questions merge pre-computed community summaries into retrieval"},"deepAuditor":{"enabled":true,"flag":"RAG_DEEP_AUDITOR","description":"Deep-preset answers are citation-audited before returning (auditReport on the response)"},"standardsMetadataLane":{"enabled":true,"flag":"RAG_STANDARDS_METADATA_LANE","description":"Prescriptive questions rescue binding standards via stored metadata"}},"docs":"https://github.com/Alterspective-Engine/alterspective-rag-service"}