Admin tools
Bot-service admin MCP (full ops)
Endpoint: Railway bot-service POST /mcp Auth: always Authorization: Bearer <ADMIN_API_TOKEN> Identity: house-of-vibes / bot build string Source: workers/discord-bot-service/src/routes/mcp.ts
Each tools/call dispatches to an existing admin route — guards reused.
| Tool | Method | Notes |
|---|---|---|
server_map | GET | Channel/category map |
list_scheduled_events | GET | Events tab |
hangout_status | GET | Daily hangout live status |
eventbrite_registrations | GET | Registration counts |
activation_status | GET | Onboarding/funnel/XP flywheel (read-only) |
run_hangout_eventsync | POST | Idempotent event-sync |
delete_scheduled_event | POST | event_ids: string[] — refuses Hangout/Demo Day |
vibe_server_command | POST | command, optional confirm — plan then confirm |
Eight shipped admin tools (including activation_status).
Transport: POST only; GET → 405; notifications → 202.
Web app admin proxies
On POST /api/mcp (admin principal) the web handler also exposes bot-proxy tools:
| Tool | Needs on Vercel |
|---|---|
hangout_status | BOT_SERVICE_URL + ADMIN_API_TOKEN |
list_scheduled_events | same |
server_map | same |
eventbrite_registrations | same |
activation_status | same |
run_hangout_eventsync | same |
delete_scheduled_event | same |
vibe_server_command | same |
Without that env pair → clear "bot-proxy not configured" tool result. Public community + travel tools still work without bot proxy env.
Operator safety
- Plan
vibe_server_commandwithoutconfirm, then re-run withconfirm: true. delete_scheduled_eventonly deletes exact ids; refuses core HoV events.activation_statusnever writes.
