Rollout provides a Model Context Protocol (MCP) server that lets AI assistants like Claude Code work inside your workspace. An assistant connected over MCP can read and manage tasks, projects, objectives, documents, workflows, and more — always acting as you, inside one workspace.
Quick setup for Claude Code
1. Add the MCP server
Add Rollout to your Claude Code MCP configuration — ~/.claude.json for all projects, or .claude/mcp.json inside a project:
{
"mcpServers": {
"rollout": {
"type": "http",
"url": "https://your-rollout-instance.com/mcp"
}
}
}
Replace your-rollout-instance.com with your Rollout URL (or localhost:4000 for local development).
2. Authenticate
Run /mcp in Claude Code and pick the Rollout server to start authentication. Claude Code:
- Registers itself with Rollout automatically
- Opens your browser to Rollout's Authorize Application page, which shows the application name, the permissions it requested, and the workspace access will be granted in
- Waits for you to click Authorize (or Deny)
After you authorize, the browser redirects back to Claude Code and the connection is ready.
Note: access is granted for the workspace you are signed into when you approve. Switch workspaces before authorizing if you need a different one.
3. Start using it
Ask Claude Code in plain language:
List my open tasks
Show the Website Redesign project
Create a task to review the PR
Authentication
Rollout uses OAuth 2.1 with PKCE. This means:
- No passwords stored in your Claude Code config
- Access tokens expire after 1 hour and are refreshed automatically; refresh tokens expire after 30 days
- Scopes limit what the assistant can do
- Everything runs as you — an MCP client can never see or change more than your own membership allows
OAuth scopes
When authorizing, you see which scopes are requested:
| Scope | Description |
|---|---|
read |
View tasks, projects, documents, workflows, and other workspace data. The default when a client requests no scopes. |
write |
Create and update tasks, projects, documents, workflows, records, and other resources |
admin |
Team/member administration and workspace-wide dashboard sharing/assignment, on top of write. Domain actions also require your current workspace role or team authority. |
Revoking access
There is no in-app page for managing authorized MCP clients yet. To stop an assistant's access:
- Remove the Rollout server from the client's MCP configuration — without a refreshed token, access ends when the current access token expires (at most 1 hour)
- MCP clients can revoke their own tokens at the standard
/oauth/revokeendpoint
Available tools
Reading and discovery
These tools work with the read scope and never change data:
| Tool | Description |
|---|---|
query |
Precise, filtered reads over any data source: Task, Project, Objective, KeyResult, Milestone, Workflow, WorkflowRun, WorkflowStepRun, Document, EntityRecord, Metric, Team, Activity, ResourceRef, ResourceLink, Connection, and Attachment. Supports filters, sorting, grouping, and pagination. |
search |
Semantic + text search across tasks, projects, documents, objectives, records, and attachments |
get_workspace_context |
Your identity plus the workspace vocabulary: task statuses and types, projects, teams, custom record schemas, and the per-source query grammar |
list_node_types |
Catalog of available workflow node types |
list_channels |
Messaging channels you can see (direct messages are never exposed) |
list_saved_views |
Saved views you can read in a collection |
describe_view_assets |
Query vocabulary and context rules for query-only Saved Views |
describe_chart_capabilities |
Aggregate sources, fields, functions, time buckets, tenant-visible metric names/kinds, and chart/stat spec shapes |
describe_dashboard_capabilities |
Page-authorable widget catalog, defaults, config schemas, and grid contract |
validate_dashboard |
Dry-run and canonicalize a complete dashboard composition without saving |
list_dashboards |
Paginate visible Page-backed dashboards, inspect one applied composition, or discover caller-owned archives for recovery |
validate_saved_view |
Dry-run a saved view revision without saving anything |
get_attachment_url |
Short-lived download URL and metadata for an attachment |
Tasks and planning
Write tools require the write scope:
| Tool | Description |
|---|---|
create_task / update_task |
Create and update tasks, with batch support, fuzzy project matching, and relative dates |
delete_task |
Archive (soft-delete) or restore tasks, with batch support |
create_project / update_project |
Create and update projects |
create_milestone / update_milestone |
Create and update milestones |
create_objective / update_objective |
Create and update objectives (OKRs) |
create_key_result / update_key_result |
Create and update key results |
objective_link |
Link a milestone or project as a weighted contributor to an objective |
Workflows
| Tool | Description |
|---|---|
create_workflow / update_workflow |
Create and update workflows; archive and restore via archived |
execute_workflow |
Trigger a workflow run |
workflow_operations |
Draft graph edits, Publish/Restore and Running/Paused controls, and run control (including bulk cancel/retry). Lifecycle responses separate current_release_id / production_source from execution_status. |
delete_workflow |
Discard a never-published pending Draft, or permanently delete an archived workflow |
Documents and records
| Tool | Description |
|---|---|
create_document / update_document |
Create and update documents (rich-text JSON or Markdown content) |
create_entity_record / update_entity_record |
Create and patch custom records |
manage_entity_schema / manage_entity_field |
Define custom record types and their fields |
Collaboration and organization
| Tool | Description |
|---|---|
create_activity |
Add structured activities to resources (currently comments) |
resource_link |
Link internal resources, external resources, and URLs to each other |
list_labels / manage_label / manage_label_group |
Read and administer labels and label groups |
create_saved_view / update_saved_view / delete_saved_view |
Create, revise, and archive saved views |
manage_task_status / manage_task_type |
Administer the workspace's task status and type sets |
Dashboards
Dashboards are Pages with immutable applied widget revisions. Saved Views are reusable query presentations that a Table widget may reference; they are not dashboard layouts.
| Tool | Description |
|---|---|
create_dashboard |
Create a private dashboard and atomically apply its first widget revision |
update_dashboard |
Rename, update Page settings, archive, or restore a dashboard with optimistic locking |
dashboard_operations |
Atomically add, update, move, duplicate, or remove widgets against an expected revision |
manage_dashboard_access |
Share with a team/workspace and set or unset default/required dashboard assignments. Team actions require write plus team authority; workspace actions require admin plus workspace-admin authority. |
Recommended flow: describe_dashboard_capabilities → describe_chart_capabilities when using Chart/Stat → validate_dashboard → create_dashboard. Re-read with list_dashboards before conflict-safe updates. List reads are bounded (limit, offset); use archived:true to find caller-owned archived dashboards and their restore lock versions.
For a Metric chart, select a returned metric_definitions entry and persist its recommended_bucket_fn; get_workspace_context(include:["query_sources"]) also exposes tenant-scoped Metric name values. For custom-record aggregates, copy the selected EntityRecord source's canonical required_query so the executor loads that schema's custom fields.
MCP can create, revise, share, assign, archive, and restore dashboards. Publishing a Page to a public URL remains an owner/admin action in the web UI because public data/form bindings require a separate security review. Dashboard authoring is capped at 100 widgets and a 1 MiB encoded composition document.
Administration
These require the admin scope:
| Tool | Description |
|---|---|
manage_team |
Create, update, and delete teams; add and remove members |
manage_member |
Invite, update roles, deactivate, and remove workspace members |
Configuration
Read-only mode
For safer AI access, self-hosted deployments can enable read-only mode, which removes all write tools from the server:
export ROLLOUT_MCP_READ_ONLY=true
The value is read when the application starts, including from a prebuilt
release, so changing it requires a restart but not an image rebuild. Accepted
true values are true, 1, yes, and on; accepted false values are
false, 0, no, and off. Any other value stops startup instead of
silently exposing write tools.
Read-only mode removes write tools from MCP discovery and dispatch. OAuth
authorization remains an independent boundary: writable deployments still
require each write tool's write or admin scope and domain authorization.
Rate limits
| Limit | Default |
|---|---|
| MCP requests | 100 per minute per user |
Client registration (/oauth/register) |
10 per minute per IP |
Token requests (/oauth/token) |
30 per 15 minutes per IP |
Token revocation (/oauth/revoke) |
30 per 15 minutes per IP |
Requests over a limit receive 429 Too Many Requests with a Retry-After header. MCP responses include x-ratelimit-limit and x-ratelimit-remaining headers.
Troubleshooting
"Authentication successful, but reconnection failed"
This usually means Claude Code has stale credentials. Try:
- Remove any hardcoded
Authorizationheaders from your MCP config - Restart Claude Code
- Run
/mcpagain to re-authenticate
"Invalid or expired token"
Your access token has expired and couldn't be refreshed. Run /mcp to re-authenticate.
"Unauthorized" errors
Make sure:
- You've authorized the MCP client in your browser
- Your token has the required scope for the operation (e.g.
writefor creating tasks) - You're an active member of the workspace you authorized
"Session not found"
After a Rollout server restart, clients holding an old session get a 404 and must reinitialize. Most clients do this automatically; if yours doesn't, restart it.
"Too many requests"
You hit a rate limit. Wait the number of seconds in the Retry-After header and try again.
For other MCP clients
Rollout implements standard OAuth 2.1 with these discovery endpoints:
| Endpoint | Purpose |
|---|---|
/.well-known/oauth-protected-resource |
RFC 9728 resource metadata |
/.well-known/oauth-protected-resource/mcp |
Same document, path-aware form (RFC 9728 §3.1) |
/.well-known/oauth-authorization-server |
RFC 8414 authorization server metadata |
/oauth/register |
RFC 7591 dynamic client registration |
/oauth/authorize |
Authorization endpoint |
/oauth/token |
Token endpoint |
/oauth/revoke |
Token revocation endpoint |
The server supports the authorization_code and refresh_token grant types, PKCE with S256, and public clients (no client secret). Any MCP client that supports OAuth 2.1 with dynamic client registration should work automatically.
Redirect URIs may be HTTPS, a loopback callback (http://127.0.0.1:PORT/…, http://localhost:PORT/…), or a private-use scheme owned by a desktop client (com.raycast-x:/oauth, vscode://…). Schemes that name a code-execution target — javascript, data, file, vbscript — are rejected.