{"name":"hub-mcp","version":"4.0.0","spec":"ANVIL-SPEC-001","phase":"6.0-conversational","tools":["anvil_bootstrap","anvil_find_capability","anvil_workflows","anvil_agent_guide","anvil_operator_context","anvil_status","anvil_registry","anvil_events","anvil_dispatch","anvil_config","anvil_health_check","anvil_tunnel_health","anvil_triage","anvil_sync","anvil_search","anvil_infra","anvil_memory","anvil_memory_file_delete","anvil_learn","anvil_knowledge","anvil_git_push","anvil_catalog","anvil_self_heal_stats","anvil_observability_sweep","anvil_dispatch_audit","anvil_load_component","anvil_transcribe","anvil_ai_gateway","anvil_vectorize","anvil_ai_search","anvil_browser","anvil_web_analytics","anvil_observability","anvil_workflow"],"endpoints":{"health":"GET /health","mcp":"POST /mcp [auth: Bearer]","info":"GET /info","portal":"https://anvil.boz.dev/ (human UI; hub.boz.dev HTML Accept → 302)","dispatch_inbound":"POST /dispatch/inbound [auth: X-Anvil-Key]","oauth_authorize":"GET /oauth/authorize","oauth_callback":"GET /oauth/callback","chat_ui":"GET /chat → 301 https://anvil.boz.dev/ [PORTAL]","chat_api":"POST /api/chat → 410 Gone [MIGRATED — agent.anvil.boz.dev]","chat_inference":"NOT on hub — use inference.anvil.boz.dev/v1/chat/completions or agent.anvil.boz.dev/v1/chat/completions","mcp_chat_misconfig":"POST /mcp/chat/completions → 404 with use_instead hints (MCP is POST /mcp JSON-RPC only)","voice_tools":"POST /api/voice/tools → ElevenLabs Cove agent webhook tools","openai_proxy":"POST /v1/* → 410 Gone [DECOMMISSIONED — use inference.anvil.boz.dev]","webhooks":"POST /webhooks/:source [no auth, per-source signature validation]","graph_subs":"GET|POST|DELETE /admin/ms365/subscriptions [auth: Bearer]","apps_register":"POST /api/apps/register [auth: Bearer]","apps_heartbeat":"POST /api/apps/heartbeat [auth: Bearer]","apps_events":"POST /api/apps/events [auth: Bearer]","knowledge_ingest":"POST /api/knowledge/ingest [auth: Bearer]","knowledge_bulk":"POST /api/knowledge/bulk [auth: Bearer]","knowledge_search":"POST /api/knowledge/search [auth: Bearer]","knowledge_stats":"GET /api/knowledge/stats [auth: Bearer]","knowledge_clickup":"POST /api/knowledge/clickup [auth: Bearer] — c2c ClickUp workspace crawl","knowledge_migrate":"POST /api/knowledge/migrate [auth: Bearer] — D1→R2 legacy chunk migration","web_analytics":"POST /api/analytics — Zaraz server-side event ingest → Analytics Engine"},"auth":{"mcp":"Authorization: Bearer <CONNECTOR_API_KEY | ANVIL_SHARED_SECRET | HUB_API_KEY>  OR  X-Anvil-Secret: <ANVIL_SHARED_SECRET>","dispatch":"X-Anvil-Key | X-Anvil-Secret: <ANVIL_SHARED_SECRET | HUB_API_KEY>"}}