{"name":"boon-mcp-server","version":"4.89.137","status":"ok","docs_enabled":true,"mcp_tool_count":348,"liveness_probe":"/health","readiness_probe":"/healthz","deployed_sha":"1a5a2958ebf939fc19750ed23fe951a7a8b2747f","brain_storage":"supabase","mcp_config":"supabase","brain_supabase_configured":true,"brain_entries_cache":{"key":"live-v1:org=boon","enabled":true,"ttl_ms":90000,"cached":true,"entry_count":1000,"expires_at":"2026-08-01T07:13:13.654Z","generation":2,"partition_count":1},"brain_audit":"database_triggered","brain_health_alerts":true,"slack_bot":true,"slack_interactions":true,"slack_memory_write_back":true,"council_relay":true,"council_slack":true,"goal_injection":"opt-in (include_goal_context: true required)","mcp_endpoints":{"full":"POST /mcp          — 50 tools, for Claude Code / Claude AI / Cursor / Codex / full agents","lovable":"POST /lovable/mcp  — 11 tools (10 read-only + pm_handoff restricted, curated Lovable profile), for Lovable","v0":"POST /v0/mcp       — 10 tools (9 read-only + pm_handoff restricted, curated v0 profile, no direct Brain writes), for v0"},"tools":{"brain":["get_context_pack","brain_search","boon_brain_read","brain_list","brain_audit_log","brain_delete","boon_brain_write","brain_source_upload","brain_source_delete","brain_source_update","brain_source_list","brain_source_get","brain_source_search","propose_knowledge_item","project_spec_artifact"],"config":["mcp_config_write"],"activity":["activity_ingest_event","activity_get_threads","activity_drill_down"],"ci":["change_get_active_risks","change_get_recent","change_get_project_risks","change_get_promotion_report","change_mark_reviewed","change_mark_resolved","change_mark_ignored","manifest_get_connection_points","contract_get_snapshot","audit_log_action"],"github":["github_read_file","github_search_code","github_write_file","github_workflow_status","github_trigger_workflow"],"db":["db_query","staging_db_query","production_db_query","db_write"],"bridge":["boon_bridge_config_write","boon_sync_manifests"],"gateway":["init_session"],"routing":["boon_route_task","council_query"],"coordination":["agent_claim_work","agent_release_work","agent_get_active_work","agent_send_message","agent_check_inbox","agent_request_help","agent_reply_help","agent_get_help_status","pm_context_request","pm_handoff","agent_slack_post","agent_slack_post_to_channel","agent_slack_post_document","agent_slack_delete","agent_slack_purge_channel","agent_slack_read","brain_bot_slack_post"],"lovable_profile":["get_context_pack","brain_search","brain_source_list","brain_source_get","activity_get_threads","change_get_active_risks","manifest_get_connection_points","github_read_file","db_query","lovable_project_init","pm_handoff"],"v0_profile":["get_context_pack","brain_search","brain_source_list","brain_source_get","activity_get_threads","change_get_active_risks","manifest_get_connection_points","github_read_file","db_query","pm_handoff"]},"mcp_auth_mode":"enforce","env_configured":{"github":true,"github_push_webhook":false,"github_oauth":true,"brain_supabase":true,"bridge_token":true,"brain_read_token":true,"mcp_read_via_bridge_fallback":false,"owner_token_configured":true,"oauth_discovery":true,"oauth_consent_ui":true,"oauth_google_broker":true,"mpe_slack_alerts":true,"slack_bot_token":true,"slack_signing_secret":true,"anthropic_api_key":true,"relay_secret":true,"openai":true,"perplexity":true,"google":true,"sentry":true,"sentry_webhook":true,"sentry_webhooks":{"default":{"env_key":"SENTRY_WEBHOOK_SECRET","configured":true,"path":"/webhooks/sentry"},"platform":{"env_key":"SENTRY_WEBHOOK_SECRET_PLATFORM","configured":true,"path":"/webhooks/sentry/platform"}},"bug_fix_agent":{"target_valid":true,"cursor_api_key":true,"cursor_spawn_ready":false},"platform_wave1":{"injection_guard":true,"error_sanitization":true,"circuit_breaker":true}},"subsystems":{"circuit_breakers":{"database":{"state":"closed","failure_count":0,"opened_at":null},"cortex":{"state":"closed","failure_count":1,"opened_at":null},"council":{"state":"closed","failure_count":0,"opened_at":null}},"cortex":{"service":"cortex","ok":true,"configured":true,"status":200,"latency_ms":71,"version":"2.0.0","brain_federation":{"service":"brain","ok":false,"configured":true,"status":429,"latency_ms":17,"version":null,"platform":null,"detail":"http_429"},"detail":"ok"}},"platform":{"spec":"PLATFORM-20260531-D6R4EAHZ","waves_shipped":["wave1","wave2","wave3-brain-scaffold"],"v1_routes":["/v1/identity","/v1/events","/v1/jobs/status","/v1/settings","/v1/workflows"],"cortex_bridge_configured":true,"cortex_service_token_configured":true,"docs_route":true},"slack_documents":{"post_documents_configured":true,"delete_documents_configured":true,"api":"files.getUploadURLExternal → upload_url → files.completeUploadExternal (files.upload is retired); files.delete to remove","required_scope":"files:write (bot) — app must be reinstalled after adding it","mcp_tool":"agent_slack_post_document","delete_tool":"agent_slack_delete (file_id)","max_bytes":26214400,"note":"Brain attaches real files (guides, specs, reports, CSV, PDF) in channels, threads and DMs, and can delete files it uploaded (idempotent). A missing scope surfaces as an operator-readable message, not a bare Slack error code."},"brain_source_library":{"slack_store_retrieve":true,"hybrid_search_uses_openai_embeddings":true,"embedding_column_migration":"supabase/migrations/20260513200000_brain_sources_embedding.sql","share_token_migration":"supabase/migrations/20260515120000_brain_sources_share_token.sql","public_share_viewer":true,"public_share_viewer_route":"GET /public/brain-source/:id/:token (no auth; not indexed)","note":"Run share_token migration on Brain Supabase. Set BOON_PUBLIC_BASE_URL or RAILWAY_PUBLIC_DOMAIN so uploads return public_viewer_url. Run embedding migration so brain_sources.embedding exists; uploads queue async indexing. Keyword search still ranks sources without vectors."}}