MCP server
Round Robin exposes a remote Model Context Protocol (MCP) server. Connect it to an AI assistant that supports remote MCP servers — Claude, for example — and the assistant can answer questions like “who is on call for PAYMENTS right now?” or “show me the upcoming schedule for the support rotation” using live data from your workspace, and even create and schedule rotations for you (with your confirmation, and only where you have permission).
All results are scoped to your own Slack workspace, which is derived from your sign-in — an assistant cannot ask for data from a workspace you don’t belong to.
Endpoint
Section titled “Endpoint”| Property | Value |
|---|---|
| URL | https://api.roundrobinbot.eu/mcp |
| Transport | Streamable HTTP |
| Authentication | OAuth 2.1 (sign in with the same account you use for the dashboard) |
Connect your assistant
Section titled “Connect your assistant”The exact steps depend on your MCP client, but the flow is standard OAuth:
- Add a remote MCP server in your client and enter the URL
https://api.roundrobinbot.eu/mcp. - The client discovers the authorization server automatically (RFC 9728 protected-resource metadata) and registers itself — dynamic client registration is supported, so no manual client ID is needed.
- Your browser opens a Round Robin sign-in page. Sign in with the same account you use for the dashboard.
- Once you approve, the client receives a token and the tools become available.
For example, in Claude Code:
claude mcp add --transport http round-robin https://api.roundrobinbot.eu/mcpthen run /mcp inside Claude Code to complete the sign-in.
Available tools
Section titled “Available tools”| Tool | Input | What it returns |
|---|---|---|
who_is_on_call |
Rotation code (e.g. PAYMENTS) |
Who is on call now and up next (names, Slack IDs, shift end times), the rotation’s channels, its on-duty user group, whether it is enabled, and whether you are a member. |
list_my_rotations |
— | The rotations visible in your workspace, each with name, code, enabled state, who is on call now, its on-duty group, and a youAreMember flag. |
get_rotation_schedule |
Rotation code, entry count (default 10) | The upcoming duty roster: each entry has the user (ID and name), turn index, and on-duty since/until timestamps (UTC). |
list_my_teams |
Count (default 50) | The Slack workspaces you belong to. |
get_user_info |
Slack user ID | Display name, real name, handle, email (if visible), and whether it is a bot. |
get_group_info |
Slack user group ID | The group’s @handle, name, and description. |
get_channel_info |
Slack channel ID | The channel’s name and whether it is private. |
Rotation and schedule results always include human-readable names alongside the raw Slack IDs, so the assistant rarely needs the lookup tools. When it does receive an unknown ID, the lookup tools return a Found: false result instead of an error.
The read tools are declared read-only and idempotent (standard MCP tool annotations), so assistants that honor annotations — Slackbot, Claude — run them without confirmation prompts.
Management tools
Section titled “Management tools”Rotations can also be created and managed conversationally — through the Slack connection only. Management tools are reserved for Round Robin’s own Slack integration (Slackbot): a personal connection you register yourself (Claude, Cursor, or any other MCP client) is read-only and does not even see these tools in its tool list. These tools change data, so assistants always summarize the change and ask for your confirmation before running them:
| Tool | Input | What it does |
|---|---|---|
create_rotation |
Name; optional code, description, members (in rotation order), channels, duty size | Creates an enabled rotation with you as owner. It starts without an automatic schedule — set one with set_rotation_schedule or in the dashboard. |
update_rotation |
Rotation code; any of: new name, new code, description, members, channels, duty size, enabled | Partially updates a rotation you own — only the fields you provide change. |
set_rotation_schedule |
Rotation code; schedule type (weekly, daysOfWeek, daily, workdays), time zone, first handover, period; type-specific options |
Sets or replaces the rotation’s automatic schedule for the common cases. Advanced options (business hours, custom calendars) live in the dashboard. |
The same rules as the dashboard apply: you must be an owner of the rotation you change, plan limits are enforced, and rotation codes must be unique. Deleting rotations is deliberately not available through assistants — use the dashboard.
Permissions
Section titled “Permissions”Access to the tools is governed by OAuth scopes, which you grant on the consent screen when connecting a client:
| Scope | Grants | Required by |
|---|---|---|
read:oncall |
Reading rotations, schedules, on-call state, and directory lookups | All read tools |
write:rotation |
Creating and updating rotations and their schedules | The management tools |
A connected client can only use tools covered by the scopes you approved, and it only sees the tools it can use: a client without write:rotation gets a tool list with the read tools alone. write:rotation is reserved for first-party surfaces — connecting through Slack grants it automatically, while self-registered clients (a personal Claude or Cursor connection) only ever receive read access. Assistants always ask for confirmation before running a management tool.
Good to know
Section titled “Good to know”- Rotation codes. The rotation tools identify rotations by their short code (like
PAYMENTS), the same code you use with slash commands in Slack.list_my_rotationsis the easiest way for an assistant to discover the codes in your workspace. - Changes are owner-gated and confirmed. The management tools follow the same permission rules as the dashboard, and assistants confirm every change with you first. There is no tool to delete a rotation or advance who is on duty — use the Slack bot or the dashboard for those.
- Workspace scoping. The workspace is always taken from your authenticated identity, never from a tool parameter, so a prompt cannot redirect the assistant to another workspace’s data.
