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