rootly-mcp-server 2.2.17__tar.gz → 2.2.18__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 (84) hide show
  1. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/CHANGELOG.md +24 -0
  2. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/PKG-INFO +37 -3
  3. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/README.md +36 -2
  4. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/pyproject.toml +1 -1
  5. rootly_mcp_server-2.2.18/src/rootly_mcp_server/data/chatgpt_incident_workbench.html +576 -0
  6. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/server.py +8 -0
  7. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/server_defaults.py +2 -0
  8. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/tools/__init__.py +2 -0
  9. rootly_mcp_server-2.2.18/src/rootly_mcp_server/tools/chatgpt_app.py +350 -0
  10. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/tools/incidents.py +139 -123
  11. rootly_mcp_server-2.2.18/tests/unit/test_chatgpt_app_module.py +229 -0
  12. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_server.py +13 -0
  13. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_server_defaults_module.py +2 -0
  14. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.dockerignore +0 -0
  15. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.gitattributes +0 -0
  16. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.github/dependabot.yml +0 -0
  17. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.github/openapi-audit-remote-baseline.json +0 -0
  18. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.github/workflows/ci.yml +0 -0
  19. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.github/workflows/dependency-review.yml +0 -0
  20. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.github/workflows/openapi-audit.yml +0 -0
  21. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.github/workflows/pypi-release.yml +0 -0
  22. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.gitignore +0 -0
  23. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.semaphore/deploy-staging.yml +0 -0
  24. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.semaphore/deploy.yml +0 -0
  25. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.semaphore/semaphore.yml +0 -0
  26. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/.semaphore/update-task-definition.sh +0 -0
  27. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/CONTRIBUTING.md +0 -0
  28. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/Dockerfile +0 -0
  29. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/LICENSE +0 -0
  30. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/examples/skills/README.md +0 -0
  31. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/gemini-extension.json +0 -0
  32. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/rootly-mcp-server-demo.gif +0 -0
  33. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/rootly_openapi.json +0 -0
  34. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/scripts/audit_openapi.py +0 -0
  35. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/scripts/setup-hooks.sh +0 -0
  36. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/server.json +0 -0
  37. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/__init__.py +0 -0
  38. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/__main__.py +0 -0
  39. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/client.py +0 -0
  40. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/code_mode.py +0 -0
  41. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/data/__init__.py +0 -0
  42. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/exceptions.py +0 -0
  43. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/legacy_server.py +0 -0
  44. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/mcp_error.py +0 -0
  45. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/monitoring.py +0 -0
  46. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/och_client.py +0 -0
  47. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/pagination.py +0 -0
  48. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/payload_stripping.py +0 -0
  49. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/security.py +0 -0
  50. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/smart_utils.py +0 -0
  51. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/spec_transform.py +0 -0
  52. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/tools/alerts.py +0 -0
  53. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/tools/oncall.py +0 -0
  54. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/tools/resources.py +0 -0
  55. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/transport.py +0 -0
  56. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/utils.py +0 -0
  57. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/src/rootly_mcp_server/validators.py +0 -0
  58. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/README.md +0 -0
  59. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/conftest.py +0 -0
  60. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/integration/local/test_basic.py +0 -0
  61. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/integration/local/test_smart_tools.py +0 -0
  62. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/integration/remote/test_essential.py +0 -0
  63. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/test_client.py +0 -0
  64. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_alert_stripping.py +0 -0
  65. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_authentication.py +0 -0
  66. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_code_mode_module.py +0 -0
  67. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_exceptions.py +0 -0
  68. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_http_headers.py +0 -0
  69. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_legacy_server_module.py +0 -0
  70. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_main_transport.py +0 -0
  71. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_mcp_error_module.py +0 -0
  72. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_och_client.py +0 -0
  73. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_oncall_handoff.py +0 -0
  74. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_oncall_metrics.py +0 -0
  75. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_oncall_new_tools.py +0 -0
  76. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_oncall_severity_normalization.py +0 -0
  77. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_payload_stripping_module.py +0 -0
  78. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_security.py +0 -0
  79. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_smart_utils.py +0 -0
  80. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_tools.py +0 -0
  81. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_transport_module.py +0 -0
  82. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_utils.py +0 -0
  83. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/tests/unit/test_validators.py +0 -0
  84. {rootly_mcp_server-2.2.17 → rootly_mcp_server-2.2.18}/uv.lock +0 -0
@@ -5,6 +5,30 @@ All notable changes to the Rootly MCP Server will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.2.18] - Released 2026-04-15
9
+
10
+ ### Features
11
+
12
+ - **Workflow Task Tools**: Added complete workflow task management tools to enable creation, listing, retrieval, and updating of workflow actions/tasks
13
+ - **Enhanced Workflow Functionality**: Users can now build complete functional workflows instead of just workflow shells
14
+
15
+ ### New Tools
16
+
17
+ - `createWorkflowTask` - Create new workflow actions (POST `/v1/workflows/{workflow_id}/workflow_tasks`)
18
+ - `listWorkflowTasks` - List all actions in a workflow (GET `/v1/workflows/{workflow_id}/workflow_tasks`)
19
+ - `getWorkflowTask` - Retrieve specific workflow action details (GET `/v1/workflow_tasks/{id}`)
20
+ - `updateWorkflowTask` - Modify existing workflow actions (PUT `/v1/workflow_tasks/{id}`)
21
+
22
+ ### Documentation
23
+
24
+ - **Tool Count Updated**: Increased from 105 to 109 tools reflecting new workflow task capabilities
25
+ - **Tool List Updated**: Added workflow task tools to OpenAPI-generated tools section
26
+ - **Badge Cleanup**: Removed broken Cursor install badge
27
+
28
+ ### Security
29
+
30
+ - **Delete Operations**: `deleteWorkflowTask` remains intentionally excluded following security policy for destructive operations
31
+
8
32
  ## [2.2.17] - Released 2026-04-14
9
33
 
10
34
  ### Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rootly-mcp-server
3
- Version: 2.2.17
3
+ Version: 2.2.18
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
@@ -46,7 +46,6 @@ Description-Content-Type: text/markdown
46
46
  [![PyPI version](https://badge.fury.io/py/rootly-mcp-server.svg)](https://pypi.org/project/rootly-mcp-server/)
47
47
  [![PyPI - Downloads](https://img.shields.io/pypi/dm/rootly-mcp-server)](https://pypi.org/project/rootly-mcp-server/)
48
48
  [![Python Version](https://img.shields.io/pypi/pyversions/rootly-mcp-server.svg)](https://pypi.org/project/rootly-mcp-server/)
49
- [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=rootly&config=eyJ1cmwiOiJodHRwczovL21jcC5yb290bHkuY29tL21jcCIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciA8WU9VUl9ST09UTFlfQVBJX1RPS0VOPiJ9fQo=)
50
49
 
51
50
  An MCP server for the [Rootly API](https://docs.rootly.com/api-reference/overview) for Cursor, Windsurf, Claude, and other MCP clients.
52
51
 
@@ -277,6 +276,36 @@ Add to `claude_desktop_config.json`:
277
276
 
278
277
  </details>
279
278
 
279
+ ## ChatGPT App Starter
280
+
281
+ The server now includes a built-in ChatGPT app surface for incident exploration.
282
+
283
+ - **Model-visible app tool:** `open_rootly_incident_workbench`
284
+ - **App-only detail tool:** `get_rootly_incident_detail`
285
+ - **UI resource:** `ui://rootly/incident-workbench.html`
286
+
287
+ This gives ChatGPT a visual Rootly incident workbench without needing a separate backend.
288
+
289
+ ### What it does
290
+
291
+ - Applies structured incident filters such as team, time range, severity, and status
292
+ - Collects a bounded set of incident summaries for the widget
293
+ - Lets the widget open a detailed incident pane without exposing the detail tool to the model
294
+
295
+ ### Try it in ChatGPT Developer Mode
296
+
297
+ Once the MCP server is connected in ChatGPT Developer Mode, try prompts like:
298
+
299
+ - `Open the Rootly incident workbench for Infrastructure incidents from the last 7 days`
300
+ - `Show me resolved critical incidents for Infrastructure from April 1 through April 13`
301
+ - `Open the Rootly incident workbench for database timeout incidents`
302
+
303
+ ### Production auth note
304
+
305
+ For internal testing and developer-mode setups, the existing bearer-token flow is enough.
306
+
307
+ For a public ChatGPT app that exposes customer-specific data or write actions, plan to add OAuth 2.1 support on the MCP side before submission. The current Rootly MCP server forwards bearer tokens, but public Apps SDK submissions expect OAuth 2.1-compatible MCP authorization metadata and token verification.
308
+
280
309
  ## Rootly CLI
281
310
 
282
311
  Standalone CLI for incidents, alerts, services, and on-call operations.
@@ -409,7 +438,7 @@ docker run -p 8000:8000 \
409
438
 
410
439
  ## Supported Tools
411
440
 
412
- The default server configuration exposes **105 tools**.
441
+ The default server configuration exposes **110 tools**.
413
442
 
414
443
  ### Custom Agentic Tools
415
444
 
@@ -428,6 +457,7 @@ The default server configuration exposes **105 tools**.
428
457
  - `list_endpoints`
429
458
  - `list_incidents`
430
459
  - `list_shifts`
460
+ - `open_rootly_incident_workbench`
431
461
  - `search_incidents`
432
462
  - `suggest_solutions`
433
463
  - `updateIncident` - scoped incident update tool for `summary` and `retrospective_progress_status`
@@ -457,6 +487,7 @@ createService
457
487
  createSeverity
458
488
  createTeam
459
489
  createWorkflow
490
+ createWorkflowTask
460
491
  deleteEscalationLevel
461
492
  deleteEscalationPath
462
493
  deleteEscalationPolicy
@@ -482,6 +513,7 @@ getSeverity
482
513
  getTeam
483
514
  getUser
484
515
  getWorkflow
516
+ getWorkflowTask
485
517
  listAlerts
486
518
  listEnvironments
487
519
  listEscalationLevels
@@ -506,6 +538,7 @@ listShifts
506
538
  listTeams
507
539
  listUsers
508
540
  listWorkflows
541
+ listWorkflowTasks
509
542
  updateAlert
510
543
  updateEnvironment
511
544
  updateEscalationLevel
@@ -524,6 +557,7 @@ updateSeverity
524
557
  updateTeam
525
558
  updateUser
526
559
  updateWorkflow
560
+ updateWorkflowTask
527
561
  ```
528
562
 
529
563
  Delete operations are intentionally scoped to screenshot coverage paths:
@@ -4,7 +4,6 @@
4
4
  [![PyPI version](https://badge.fury.io/py/rootly-mcp-server.svg)](https://pypi.org/project/rootly-mcp-server/)
5
5
  [![PyPI - Downloads](https://img.shields.io/pypi/dm/rootly-mcp-server)](https://pypi.org/project/rootly-mcp-server/)
6
6
  [![Python Version](https://img.shields.io/pypi/pyversions/rootly-mcp-server.svg)](https://pypi.org/project/rootly-mcp-server/)
7
- [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=rootly&config=eyJ1cmwiOiJodHRwczovL21jcC5yb290bHkuY29tL21jcCIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciA8WU9VUl9ST09UTFlfQVBJX1RPS0VOPiJ9fQo=)
8
7
 
9
8
  An MCP server for the [Rootly API](https://docs.rootly.com/api-reference/overview) for Cursor, Windsurf, Claude, and other MCP clients.
10
9
 
@@ -235,6 +234,36 @@ Add to `claude_desktop_config.json`:
235
234
 
236
235
  </details>
237
236
 
237
+ ## ChatGPT App Starter
238
+
239
+ The server now includes a built-in ChatGPT app surface for incident exploration.
240
+
241
+ - **Model-visible app tool:** `open_rootly_incident_workbench`
242
+ - **App-only detail tool:** `get_rootly_incident_detail`
243
+ - **UI resource:** `ui://rootly/incident-workbench.html`
244
+
245
+ This gives ChatGPT a visual Rootly incident workbench without needing a separate backend.
246
+
247
+ ### What it does
248
+
249
+ - Applies structured incident filters such as team, time range, severity, and status
250
+ - Collects a bounded set of incident summaries for the widget
251
+ - Lets the widget open a detailed incident pane without exposing the detail tool to the model
252
+
253
+ ### Try it in ChatGPT Developer Mode
254
+
255
+ Once the MCP server is connected in ChatGPT Developer Mode, try prompts like:
256
+
257
+ - `Open the Rootly incident workbench for Infrastructure incidents from the last 7 days`
258
+ - `Show me resolved critical incidents for Infrastructure from April 1 through April 13`
259
+ - `Open the Rootly incident workbench for database timeout incidents`
260
+
261
+ ### Production auth note
262
+
263
+ For internal testing and developer-mode setups, the existing bearer-token flow is enough.
264
+
265
+ For a public ChatGPT app that exposes customer-specific data or write actions, plan to add OAuth 2.1 support on the MCP side before submission. The current Rootly MCP server forwards bearer tokens, but public Apps SDK submissions expect OAuth 2.1-compatible MCP authorization metadata and token verification.
266
+
238
267
  ## Rootly CLI
239
268
 
240
269
  Standalone CLI for incidents, alerts, services, and on-call operations.
@@ -367,7 +396,7 @@ docker run -p 8000:8000 \
367
396
 
368
397
  ## Supported Tools
369
398
 
370
- The default server configuration exposes **105 tools**.
399
+ The default server configuration exposes **110 tools**.
371
400
 
372
401
  ### Custom Agentic Tools
373
402
 
@@ -386,6 +415,7 @@ The default server configuration exposes **105 tools**.
386
415
  - `list_endpoints`
387
416
  - `list_incidents`
388
417
  - `list_shifts`
418
+ - `open_rootly_incident_workbench`
389
419
  - `search_incidents`
390
420
  - `suggest_solutions`
391
421
  - `updateIncident` - scoped incident update tool for `summary` and `retrospective_progress_status`
@@ -415,6 +445,7 @@ createService
415
445
  createSeverity
416
446
  createTeam
417
447
  createWorkflow
448
+ createWorkflowTask
418
449
  deleteEscalationLevel
419
450
  deleteEscalationPath
420
451
  deleteEscalationPolicy
@@ -440,6 +471,7 @@ getSeverity
440
471
  getTeam
441
472
  getUser
442
473
  getWorkflow
474
+ getWorkflowTask
443
475
  listAlerts
444
476
  listEnvironments
445
477
  listEscalationLevels
@@ -464,6 +496,7 @@ listShifts
464
496
  listTeams
465
497
  listUsers
466
498
  listWorkflows
499
+ listWorkflowTasks
467
500
  updateAlert
468
501
  updateEnvironment
469
502
  updateEscalationLevel
@@ -482,6 +515,7 @@ updateSeverity
482
515
  updateTeam
483
516
  updateUser
484
517
  updateWorkflow
518
+ updateWorkflowTask
485
519
  ```
486
520
 
487
521
  Delete operations are intentionally scoped to screenshot coverage paths:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rootly-mcp-server"
3
- version = "2.2.17"
3
+ version = "2.2.18"
4
4
  description = "Secure Model Context Protocol server for Rootly APIs with AI SRE capabilities, comprehensive error handling, and input validation"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"