rootly-mcp-server 2.2.11__tar.gz → 2.2.13__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.github/workflows/ci.yml +1 -1
  2. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/CHANGELOG.md +136 -2
  3. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/PKG-INFO +134 -26
  4. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/README.md +130 -23
  5. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/pyproject.toml +4 -3
  6. rootly_mcp_server-2.2.13/src/rootly_mcp_server/code_mode.py +294 -0
  7. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/server.py +63 -15
  8. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/tools/oncall.py +117 -21
  9. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/transport.py +228 -0
  10. rootly_mcp_server-2.2.13/tests/unit/test_code_mode_module.py +273 -0
  11. rootly_mcp_server-2.2.13/tests/unit/test_oncall_handoff.py +475 -0
  12. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_server.py +168 -1
  13. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_transport_module.py +126 -0
  14. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/uv.lock +14 -12
  15. rootly_mcp_server-2.2.11/src/rootly_mcp_server/code_mode.py +0 -160
  16. rootly_mcp_server-2.2.11/tests/unit/test_code_mode_module.py +0 -149
  17. rootly_mcp_server-2.2.11/tests/unit/test_oncall_handoff.py +0 -69
  18. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.dockerignore +0 -0
  19. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.gitattributes +0 -0
  20. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.github/dependabot.yml +0 -0
  21. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.github/workflows/dependency-review.yml +0 -0
  22. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.github/workflows/pypi-release.yml +0 -0
  23. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.gitignore +0 -0
  24. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.semaphore/deploy-staging.yml +0 -0
  25. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.semaphore/deploy.yml +0 -0
  26. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.semaphore/semaphore.yml +0 -0
  27. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/.semaphore/update-task-definition.sh +0 -0
  28. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/CONTRIBUTING.md +0 -0
  29. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/Dockerfile +0 -0
  30. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/LICENSE +0 -0
  31. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/examples/skills/README.md +0 -0
  32. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/gemini-extension.json +0 -0
  33. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/rootly-mcp-server-demo.gif +0 -0
  34. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/rootly_openapi.json +0 -0
  35. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/scripts/setup-hooks.sh +0 -0
  36. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/server.json +0 -0
  37. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/__init__.py +0 -0
  38. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/__main__.py +0 -0
  39. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/client.py +0 -0
  40. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/data/__init__.py +0 -0
  41. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/exceptions.py +0 -0
  42. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/legacy_server.py +0 -0
  43. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/mcp_error.py +0 -0
  44. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/monitoring.py +0 -0
  45. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/och_client.py +0 -0
  46. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/pagination.py +0 -0
  47. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/payload_stripping.py +0 -0
  48. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/security.py +0 -0
  49. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/server_defaults.py +0 -0
  50. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/smart_utils.py +0 -0
  51. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/spec_transform.py +0 -0
  52. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/tools/__init__.py +0 -0
  53. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/tools/alerts.py +0 -0
  54. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/tools/incidents.py +0 -0
  55. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/tools/resources.py +0 -0
  56. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/utils.py +0 -0
  57. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/src/rootly_mcp_server/validators.py +0 -0
  58. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/README.md +0 -0
  59. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/conftest.py +0 -0
  60. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/integration/local/test_basic.py +0 -0
  61. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/integration/local/test_smart_tools.py +0 -0
  62. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/integration/remote/test_essential.py +0 -0
  63. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/test_client.py +0 -0
  64. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_alert_stripping.py +0 -0
  65. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_authentication.py +0 -0
  66. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_exceptions.py +0 -0
  67. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_http_headers.py +0 -0
  68. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_legacy_server_module.py +0 -0
  69. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_main_transport.py +0 -0
  70. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_mcp_error_module.py +0 -0
  71. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_och_client.py +0 -0
  72. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_oncall_metrics.py +0 -0
  73. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_oncall_new_tools.py +0 -0
  74. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_oncall_severity_normalization.py +0 -0
  75. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_payload_stripping_module.py +0 -0
  76. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_security.py +0 -0
  77. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_server_defaults_module.py +0 -0
  78. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_smart_utils.py +0 -0
  79. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_tools.py +0 -0
  80. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_utils.py +0 -0
  81. {rootly_mcp_server-2.2.11 → rootly_mcp_server-2.2.13}/tests/unit/test_validators.py +0 -0
@@ -77,7 +77,7 @@ jobs:
77
77
 
78
78
  - name: Upload coverage to Codecov
79
79
  if: matrix.python-version == '3.12'
80
- uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
80
+ uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad # v5
81
81
  with:
82
82
  file: ./coverage.xml
83
83
  flags: unittests
@@ -7,9 +7,143 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.2.13] - 2026-03-26
11
+
12
+ ### Changed
13
+ - Simplified the README quick start and added clearer hosted remote configuration examples for HTTP streamable, SSE, and Code Mode
14
+ - Upgraded `fastmcp[code-mode]` to `3.1.1` and refreshed CI dependencies
15
+
16
+ ### Fixed
17
+ - Validate hosted `Authorization` headers earlier and log auth header state to make malformed token issues easier to diagnose
18
+ - Hardened Code Mode `execute` by normalizing common client-prefixed tool names and returning clearer parser, import, and runtime errors
19
+
20
+ ### Security
21
+ - Patched vulnerable `authlib` and `requests` dependencies
22
+
23
+ ## [2.2.12] - 2026-03-18
24
+
25
+ ### Added
26
+ - Added MCP-level pagination to `list_shifts`, including pagination metadata and validation for invalid page numbers
27
+
28
+ ### Changed
29
+ - Slimmed heavy collection payloads for generated tools such as `listUsers`, `listServices`, and `listShifts`
30
+ - Clarified Code Mode tool discovery and pagination guidance for paginated calls
31
+ - Added and simplified Claude Code setup examples in the documentation
32
+
33
+ ### Fixed
34
+ - Trimmed `get_shift_incidents` results to avoid oversized responses
35
+ - Preserved incidents that started before a shift but were resolved during it
36
+
37
+ ## [2.2.11] - 2026-03-16
38
+
39
+ ### Added
40
+ - Added `updateIncident` for scoped incident updates in the PIR lifecycle
41
+ - Added `getIncident` and incident readback support for PIR verification
42
+
43
+ ### Changed
44
+ - Updated `search_incidents` to include retrospective progress status in readback results
45
+ - Scoped GitHub Actions workflow permissions more tightly
46
+
47
+ ### Fixed
48
+ - Made Code Mode `execute` compatible with older Monty runtimes
49
+ - Patched vulnerable `black` and `PyJWT` dependencies
50
+ - Fixed CI usage of `actions/upload-artifact`
51
+
52
+ ## [2.2.10] - 2026-03-12
53
+
54
+ ### Added
55
+ - Added a hosted Code Mode endpoint and enabled Code Mode by default in hosted dual-mode deployments
56
+ - Added streamable HTTP and SSE dual-transport support in a single hosted process
57
+ - Added screenshot coverage, escalation APIs, and tighter allowlist path matching
58
+ - Added structured tool-usage telemetry for Datadog, including transport-aware metrics and hashed identity context
59
+ - Added Gemini CLI extension support and editor-specific setup documentation
60
+ - Added branch-based staging deployment pipeline support
61
+
62
+ ### Changed
63
+ - Reorganized Quick Start documentation by editor and added Rootly CLI guidance
64
+ - Refreshed vulnerable runtime dependencies and normalized log severity handling
65
+
66
+ ### Fixed
67
+ - Restored legacy server parity while preserving compatibility with FastMCP 3.x `list_tools()` and `send()` behavior
68
+ - Forwarded auth tokens correctly in hosted SSE and streamable HTTP paths
69
+ - Reduced hosted auth noise, improved graceful shutdown behavior, and preserved error context across multi-call tools
70
+ - Fixed non-string incident severity handling in `shift_incidents`
71
+
72
+ ## [2.2.9] - 2026-02-24
73
+
74
+ ### Fixed
75
+ - Added an auth header event hook for hosted mode so downstream API requests consistently carry the caller's bearer token
76
+
77
+ ## [2.2.8] - 2026-02-24
78
+
79
+ ### Added
80
+ - Added filter parameters to `listAlerts`
81
+ - Added transport and hosting mode to the Rootly `User-Agent`
82
+
83
+ ### Security
84
+ - Hardened the Dockerfile and added `.dockerignore`
85
+
86
+ ## [2.2.6] - 2026-02-19
87
+
88
+ ### Added
89
+ - Added `get_alert_by_short_id` so alerts can be fetched by short ID or full alert URL
90
+
91
+ ### Changed
92
+ - Reduced alert API response payload size significantly and added User-Agent tracking
93
+
94
+ ### Fixed
95
+ - Included alert `url` and `created_at` in alert field selection
96
+ - Removed the `timeout` parameter from `FastMCP.from_openapi()` for FastMCP 3.0 compatibility
97
+
98
+ ## [2.2.4] - 2026-02-18
99
+
100
+ ### Added
101
+ - Added MCP registry metadata
102
+
103
+ ### Fixed
104
+ - Enforced JSON:API headers through an `httpx` event hook to resolve hosted `415` errors more reliably
105
+
106
+ ## [2.2.3] - 2026-02-05
107
+
108
+ ### Added
109
+ - Added debug logging for HTTP requests and headers
110
+
111
+ ## [2.2.2] - 2026-02-05
112
+
113
+ ### Fixed
114
+ - Removed existing content-type headers case-insensitively before setting JSON:API headers
115
+
116
+ ## [2.2.1] - 2026-02-05
117
+
118
+ ### Fixed
119
+ - Always set JSON:API headers regardless of request kwargs to prevent hosted `415` failures
120
+
121
+ ## [2.2.0] - 2026-02-05
122
+
123
+ ### Changed
124
+ - Replaced `burnout` terminology with `health risk` across the On-Call Health feature set
125
+
126
+ ## [2.1.4] - 2026-02-05
127
+
128
+ ### Fixed
129
+ - Resolved hosted MCP `415 Unsupported Media Type` errors
130
+
131
+ ## [2.1.3] - 2026-02-05
132
+
133
+ ### Added
134
+ - Added the On-Call Health integration for burnout-risk detection
135
+ - Added unit tests for the On-Call Health integration
136
+
137
+ ### Changed
138
+ - Streamlined the README and moved development setup details into `CONTRIBUTING.md`
139
+
140
+ ### Fixed
141
+ - Added proper type hints to `och_client.py`
142
+
143
+ ## [2.1.2] - 2026-02-05
144
+
10
145
  ### Added
11
- - Gemini CLI extension support via `gemini-extension.json` manifest
12
- - Gemini CLI installation instructions in README
146
+ - Added on-call AI workflow tools
13
147
 
14
148
  ## [2.1.1] - 2026-02-04
15
149
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rootly-mcp-server
3
- Version: 2.2.11
3
+ Version: 2.2.13
4
4
  Summary: Secure Model Context Protocol server for Rootly APIs with AI SRE capabilities, comprehensive error handling, and input validation
5
5
  Project-URL: Homepage, https://github.com/Rootly-AI-Labs/Rootly-MCP-server
6
6
  Project-URL: Issues, https://github.com/Rootly-AI-Labs/Rootly-MCP-server/issues
@@ -21,12 +21,13 @@ Classifier: Topic :: Software Development :: Build Tools
21
21
  Classifier: Topic :: System :: Monitoring
22
22
  Classifier: Topic :: System :: Systems Administration
23
23
  Requires-Python: >=3.12
24
+ Requires-Dist: authlib>=1.6.9
24
25
  Requires-Dist: brotli>=1.2.0
25
- Requires-Dist: fastmcp[code-mode]==3.1.0
26
+ Requires-Dist: fastmcp[code-mode]==3.1.1
26
27
  Requires-Dist: httpx==0.28.1
27
28
  Requires-Dist: numpy>=1.24.0
28
29
  Requires-Dist: pydantic==2.12.5
29
- Requires-Dist: requests==2.32.5
30
+ Requires-Dist: requests==2.33.0
30
31
  Requires-Dist: scikit-learn>=1.3.0
31
32
  Provides-Extra: dev
32
33
  Requires-Dist: bandit>=1.7.0; extra == 'dev'
@@ -45,15 +46,75 @@ Description-Content-Type: text/markdown
45
46
  [![Python Version](https://img.shields.io/pypi/pyversions/rootly-mcp-server.svg)](https://pypi.org/project/rootly-mcp-server/)
46
47
  [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=rootly&config=eyJ1cmwiOiJodHRwczovL21jcC5yb290bHkuY29tL3NzZSIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciA8WU9VUl9ST09UTFlfQVBJX1RPS0VOPiJ9fQ==)
47
48
 
48
- An MCP server for the [Rootly API](https://docs.rootly.com/api-reference/overview) that integrates seamlessly with MCP-compatible editors like Cursor, Windsurf, and Claude. Resolve production incidents in under a minute without leaving your IDE.
49
+ An MCP server for the [Rootly API](https://docs.rootly.com/api-reference/overview) for Cursor, Windsurf, Claude, and other MCP clients.
49
50
 
50
51
  ![Demo GIF](https://raw.githubusercontent.com/Rootly-AI-Labs/Rootly-MCP-server/refs/heads/main/rootly-mcp-server-demo.gif)
51
52
 
52
53
  ## Quick Start
53
54
 
54
- The fastest way to get started is to connect to our hosted MCP server no installation required.
55
+ Use the hosted MCP server. No local installation required.
55
56
 
56
- ### Claude Code
57
+ ### Hosted Transport Options
58
+
59
+ - **Streamable HTTP (recommended):** `https://mcp.rootly.com/mcp`
60
+ - **SSE (fallback):** `https://mcp.rootly.com/sse`
61
+ - **Code Mode:** `https://mcp.rootly.com/mcp-codemode`
62
+
63
+ ### General Remote Setup
64
+
65
+ Default remote config (HTTP streamable):
66
+
67
+ ```json
68
+ {
69
+ "mcpServers": {
70
+ "rootly": {
71
+ "url": "https://mcp.rootly.com/mcp",
72
+ "headers": {
73
+ "Authorization": "Bearer YOUR_ROOTLY_API_TOKEN"
74
+ }
75
+ }
76
+ }
77
+ }
78
+ ```
79
+
80
+ SSE fallback:
81
+
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "rootly": {
86
+ "url": "https://mcp.rootly.com/sse",
87
+ "headers": {
88
+ "Authorization": "Bearer YOUR_ROOTLY_API_TOKEN"
89
+ }
90
+ }
91
+ }
92
+ }
93
+ ```
94
+
95
+ Code Mode:
96
+
97
+ ```json
98
+ {
99
+ "mcpServers": {
100
+ "rootly": {
101
+ "url": "https://mcp.rootly.com/mcp-codemode",
102
+ "headers": {
103
+ "Authorization": "Bearer YOUR_ROOTLY_API_TOKEN"
104
+ }
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ ### Agent Setup
111
+
112
+ <details>
113
+ <summary><strong>Claude Code</strong></summary>
114
+
115
+ <br>
116
+
117
+ **Streamable HTTP**
57
118
 
58
119
  ```bash
59
120
  claude mcp add --transport http rootly https://mcp.rootly.com/mcp \
@@ -74,7 +135,32 @@ claude mcp add --transport sse rootly-sse https://mcp.rootly.com/sse \
74
135
  --header "Authorization: Bearer YOUR_ROOTLY_API_TOKEN"
75
136
  ```
76
137
 
77
- ### Gemini CLI
138
+ **Manual Configuration**
139
+
140
+ Create `.mcp.json` in your project root:
141
+
142
+ ```json
143
+ {
144
+ "mcpServers": {
145
+ "rootly": {
146
+ "type": "sse",
147
+ "url": "https://mcp.rootly.com/sse",
148
+ "headers": {
149
+ "Authorization": "Bearer YOUR_ROOTLY_API_TOKEN"
150
+ }
151
+ }
152
+ }
153
+ }
154
+ ```
155
+
156
+ Restart Claude Code after updating the config.
157
+
158
+ </details>
159
+
160
+ <details>
161
+ <summary><strong>Gemini CLI</strong></summary>
162
+
163
+ <br>
78
164
 
79
165
  Install the extension:
80
166
 
@@ -98,7 +184,12 @@ Or configure manually in `~/.gemini/settings.json`:
98
184
  }
99
185
  ```
100
186
 
101
- ### Cursor
187
+ </details>
188
+
189
+ <details>
190
+ <summary><strong>Cursor</strong></summary>
191
+
192
+ <br>
102
193
 
103
194
  Add to `.cursor/mcp.json` or `~/.cursor/mcp.json`:
104
195
 
@@ -115,7 +206,12 @@ Add to `.cursor/mcp.json` or `~/.cursor/mcp.json`:
115
206
  }
116
207
  ```
117
208
 
118
- ### Windsurf
209
+ </details>
210
+
211
+ <details>
212
+ <summary><strong>Windsurf</strong></summary>
213
+
214
+ <br>
119
215
 
120
216
  Add to `~/.codeium/windsurf/mcp_config.json`:
121
217
 
@@ -132,7 +228,12 @@ Add to `~/.codeium/windsurf/mcp_config.json`:
132
228
  }
133
229
  ```
134
230
 
135
- ### Codex
231
+ </details>
232
+
233
+ <details>
234
+ <summary><strong>Codex</strong></summary>
235
+
236
+ <br>
136
237
 
137
238
  Add to `~/.codex/config.toml`:
138
239
 
@@ -142,7 +243,12 @@ url = "https://mcp.rootly.com/mcp"
142
243
  bearer_token_env_var = "ROOTLY_API_TOKEN"
143
244
  ```
144
245
 
145
- ### Claude Desktop
246
+ </details>
247
+
248
+ <details>
249
+ <summary><strong>Claude Desktop</strong></summary>
250
+
251
+ <br>
146
252
 
147
253
  Add to `claude_desktop_config.json`:
148
254
 
@@ -163,9 +269,11 @@ Add to `claude_desktop_config.json`:
163
269
  }
164
270
  ```
165
271
 
272
+ </details>
273
+
166
274
  ## Rootly CLI
167
275
 
168
- We also offer a standalone CLI for managing incidents, alerts, services, on-call schedules, and more directly from your terminal.
276
+ Standalone CLI for incidents, alerts, services, and on-call operations.
169
277
 
170
278
  Install via Homebrew:
171
279
 
@@ -183,7 +291,7 @@ For more details, see the [Rootly CLI repository](https://github.com/rootlyhq/ro
183
291
 
184
292
  ## Alternative Installation (Local)
185
293
 
186
- If you prefer to run the MCP server locally, configure your editor with one of the options below. The package will be automatically downloaded and installed when you first open your editor.
294
+ Run the MCP server locally if you do not want to use the hosted service.
187
295
 
188
296
  ### Prerequisites
189
297
 
@@ -192,17 +300,17 @@ If you prefer to run the MCP server locally, configure your editor with one of t
192
300
  ```bash
193
301
  curl -LsSf https://astral.sh/uv/install.sh | sh
194
302
  ```
195
- - [Rootly API token](https://docs.rootly.com/api-reference/overview#how-to-generate-an-api-key%3F) with appropriate permissions (see below)
303
+ - [Rootly API token](https://docs.rootly.com/api-reference/overview#how-to-generate-an-api-key%3F)
196
304
 
197
- ### API Token Permissions
305
+ ### API Token Types
198
306
 
199
- The MCP server requires a Rootly API token. Choose the appropriate token type based on your needs:
307
+ Choose the token type based on the access you need:
200
308
 
201
- - **Global API Key** (Recommended): Full access to all entities across your Rootly instance. Required for organization-wide visibility across teams, schedules, and incidents.
202
- - **Team API Key**: Team Admin permissions with full read/edit access to entities owned by that team. Suitable for team-specific workflows.
203
- - **Personal API Key**: Inherits the permissions of the user who created it. Works for individual use cases but may have limited visibility.
309
+ - **Global API Key**: Full access across the Rootly instance. Best for organization-wide visibility.
310
+ - **Team API Key**: Access limited to entities owned by that team.
311
+ - **Personal API Key**: Access matches the user who created it.
204
312
 
205
- For full functionality of tools like `get_oncall_handoff_summary`, `get_oncall_shift_metrics`, and organization-wide incident search, a **Global API Key** is recommended.
313
+ A **Global API Key** is recommended for tools like `get_oncall_handoff_summary`, `get_oncall_shift_metrics`, and org-wide incident search.
206
314
 
207
315
  ### With uv
208
316
 
@@ -232,7 +340,7 @@ Choose one transport per server process:
232
340
 
233
341
  - **Streamable HTTP** endpoint path: `/mcp`
234
342
  - **SSE** endpoint path: `/sse`
235
- - **Code Mode (experimental)** endpoint path: `/mcp-codemode` in hosted dual-transport mode. Set `ROOTLY_CODE_MODE_ENABLED=false` to disable it or `ROOTLY_CODE_MODE_PATH` to customize the path.
343
+ - **Code Mode (experimental)** endpoint path: `/mcp-codemode` in hosted dual-transport mode
236
344
 
237
345
  Example Docker run (Streamable HTTP):
238
346
 
@@ -295,7 +403,7 @@ docker run -p 8000:8000 \
295
403
 
296
404
  ## Supported Tools
297
405
 
298
- The default server configuration currently exposes **101 tools** (including custom agentic tools and OpenAPI-generated tools).
406
+ The default server configuration exposes **101 tools**.
299
407
 
300
408
  ### Custom Agentic Tools
301
409
 
@@ -411,7 +519,7 @@ Delete operations are intentionally scoped to screenshot coverage paths:
411
519
 
412
520
  ## On-Call Health Integration
413
521
 
414
- Rootly MCP integrates with [On-Call Health](https://oncallhealth.ai) to detect workload health risk in scheduled responders.
522
+ Integrates with [On-Call Health](https://oncallhealth.ai) to detect workload health risk in scheduled responders.
415
523
 
416
524
  ### Setup
417
525
 
@@ -445,11 +553,11 @@ Returns at-risk users who are scheduled, recommended safe replacements, and acti
445
553
 
446
554
  ## Example Skills
447
555
 
448
- Want to get started quickly? We provide pre-built Claude Code skills that showcase the full power of the Rootly MCP server:
556
+ Pre-built Claude Code skills:
449
557
 
450
558
  ### 🚨 [Rootly Incident Responder](examples/skills/rootly-incident-responder.md)
451
559
 
452
- An AI-powered incident response specialist that:
560
+ This skill:
453
561
  - Analyzes production incidents with full context
454
562
  - Finds similar historical incidents using ML-based similarity matching
455
563
  - Suggests solutions based on past successful resolutions
@@ -468,7 +576,7 @@ cp examples/skills/rootly-incident-responder.md .claude/skills/
468
576
  # @rootly-incident-responder analyze incident #12345
469
577
  ```
470
578
 
471
- This skill demonstrates a complete incident response workflow using Rootly's intelligent tools combined with GitHub integration for code correlation.
579
+ It demonstrates a full incident response workflow using Rootly tools and GitHub context.
472
580
 
473
581
  ### On-Call Shift Metrics
474
582