Skip to content

Your own AI assistant (MCP)

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.

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)

The exact steps depend on your MCP client, but the flow is standard OAuth:

  1. Add a remote MCP server in your client and enter the URL https://api.roundrobinbot.eu/mcp.
  2. 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.
  3. Your browser opens a Round Robin sign-in page. Sign in with the same account you use for the dashboard.
  4. Once you approve, the client receives a token and the tools become available.

For example, in Claude Code:

Terminal window
claude mcp add --transport http round-robin https://api.roundrobinbot.eu/mcp

then run /mcp inside Claude Code to complete the sign-in.

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 — Slack AI, Claude — run them without confirmation prompts.

Rotations can also be created and managed conversationally. These tools are available to any connected client — including your personal Claude, Cursor, or other MCP client — as long as you grant the write:rotation scope when connecting (see Permissions). If you’d rather your assistant only look and never change anything, connect it with read access alone and it won’t even see these tools. Because they change data, 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.

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 the tools covered by the scopes you approved, and it only sees the tools it can use: a client granted read:oncall alone gets a tool list with the read tools only, while a client you also grant write:rotation sees the management tools too. You choose at connect time — grant read only for a look-but-don’t-touch assistant, or add write to let it create and edit rotations. Granting write is not an escalation: the connection acts as you, so an assistant can only change what you could change yourself in the dashboard, and it always asks for confirmation first.

Besides direct MCP clients, the server powers Slack AI — Slack’s built-in assistant — so people can ask “who is on call for PAYMENTS?” right inside Slack, with no client setup at all. It’s an optional per-workspace permission; see the Slack AI page for how to enable it and what it changes.

  • 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_rotations is 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.