rootly-mcp-server 2.2.24__tar.gz → 2.3.0__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 (86) hide show
  1. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/CHANGELOG.md +41 -0
  2. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/PKG-INFO +123 -34
  3. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/README.md +122 -33
  4. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/pyproject.toml +1 -1
  5. rootly_mcp_server-2.3.0/src/rootly_mcp_server/server_defaults.py +410 -0
  6. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/tools/incidents.py +31 -4
  7. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/tools/oncall.py +9 -2
  8. rootly_mcp_server-2.3.0/src/rootly_mcp_server/tools/resources.py +240 -0
  9. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_server.py +93 -0
  10. rootly_mcp_server-2.3.0/tests/unit/test_server_defaults_module.py +93 -0
  11. rootly_mcp_server-2.2.24/src/rootly_mcp_server/server_defaults.py +0 -204
  12. rootly_mcp_server-2.2.24/src/rootly_mcp_server/tools/resources.py +0 -135
  13. rootly_mcp_server-2.2.24/tests/unit/test_server_defaults_module.py +0 -55
  14. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.dockerignore +0 -0
  15. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.gitattributes +0 -0
  16. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.github/dependabot.yml +0 -0
  17. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.github/openapi-audit-remote-baseline.json +0 -0
  18. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.github/workflows/ci.yml +0 -0
  19. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.github/workflows/dependency-review.yml +0 -0
  20. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.github/workflows/openapi-audit.yml +0 -0
  21. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.github/workflows/pypi-release.yml +0 -0
  22. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.gitignore +0 -0
  23. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.semaphore/deploy-staging.yml +0 -0
  24. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.semaphore/deploy.yml +0 -0
  25. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.semaphore/semaphore.yml +0 -0
  26. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/.semaphore/update-task-definition.sh +0 -0
  27. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/CONTRIBUTING.md +0 -0
  28. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/Dockerfile +0 -0
  29. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/LICENSE +0 -0
  30. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/examples/skills/README.md +0 -0
  31. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/gemini-extension.json +0 -0
  32. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/rootly-mcp-server-demo.gif +0 -0
  33. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/rootly_openapi.json +0 -0
  34. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/scripts/audit_openapi.py +0 -0
  35. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/scripts/setup-hooks.sh +0 -0
  36. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/server.json +0 -0
  37. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/__init__.py +0 -0
  38. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/__main__.py +0 -0
  39. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/audit.py +0 -0
  40. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/client.py +0 -0
  41. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/code_mode.py +0 -0
  42. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/data/__init__.py +0 -0
  43. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/exceptions.py +0 -0
  44. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/legacy_server.py +0 -0
  45. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/mcp_error.py +0 -0
  46. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/monitoring.py +0 -0
  47. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/och_client.py +0 -0
  48. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/pagination.py +0 -0
  49. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/payload_stripping.py +0 -0
  50. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/security.py +0 -0
  51. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/server.py +0 -0
  52. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/smart_utils.py +0 -0
  53. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/spec_transform.py +0 -0
  54. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/tools/__init__.py +0 -0
  55. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/tools/alerts.py +0 -0
  56. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/transport.py +0 -0
  57. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/utils.py +0 -0
  58. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/src/rootly_mcp_server/validators.py +0 -0
  59. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/README.md +0 -0
  60. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/conftest.py +0 -0
  61. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/integration/local/test_basic.py +0 -0
  62. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/integration/local/test_smart_tools.py +0 -0
  63. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/integration/local/test_tool_allowlists.py +0 -0
  64. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/integration/remote/test_essential.py +0 -0
  65. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/test_client.py +0 -0
  66. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_alert_stripping.py +0 -0
  67. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_authentication.py +0 -0
  68. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_code_mode_module.py +0 -0
  69. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_exceptions.py +0 -0
  70. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_http_headers.py +0 -0
  71. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_legacy_server_module.py +0 -0
  72. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_main_transport.py +0 -0
  73. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_mcp_error_module.py +0 -0
  74. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_och_client.py +0 -0
  75. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_oncall_handoff.py +0 -0
  76. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_oncall_metrics.py +0 -0
  77. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_oncall_new_tools.py +0 -0
  78. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_oncall_severity_normalization.py +0 -0
  79. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_payload_stripping_module.py +0 -0
  80. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_security.py +0 -0
  81. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_smart_utils.py +0 -0
  82. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_tools.py +0 -0
  83. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_transport_module.py +0 -0
  84. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_utils.py +0 -0
  85. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/tests/unit/test_validators.py +0 -0
  86. {rootly_mcp_server-2.2.24 → rootly_mcp_server-2.3.0}/uv.lock +0 -0
@@ -5,6 +5,47 @@ 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.3.0] - Released 2026-04-23
9
+
10
+ ### Features
11
+
12
+ - **Comprehensive API Coverage Expansion**: Expanded MCP tool surface from 124 to 150+ tools by updating to latest Rootly API specification with 95+ operations
13
+ - **Enhanced Tool Discoverability**: Added contextual "WHEN TO USE" guidance to tool descriptions for improved AI agent decision-making
14
+ - **Workflow-Focused Tool Subsets**: Introduced 5 predefined tool configurations optimized for specific use cases (Incident Response, Schedule Management, Monitoring Setup, Retrospectives, Administration)
15
+ - **Operational Context Resources**: Added new MCP resources for real-time operational awareness:
16
+ - `rootly://oncall-status` - Live on-call status across teams for incident response context
17
+ - `rootly://workflow-guide` - Step-by-step workflow guidance for common Rootly operations
18
+ - **Expanded Write Operations**: Added 54 non-destructive write operations while maintaining security boundaries
19
+ - **API Path Coverage**: Increased DEFAULT_ALLOWED_PATHS from ~80 to 151 endpoints covering workflows, dashboards, communications, playbooks, and monitoring
20
+
21
+ ### Enhanced
22
+
23
+ - **Tool Descriptions**: Enhanced incident and on-call tool descriptions with specific usage context and best practices
24
+ - **Environment Configuration**: Improved environment-based tool subset configuration following MCP best practices
25
+ - **Error Handling**: Robust error handling in new resource implementations with proper categorization
26
+
27
+ ### Documentation
28
+
29
+ - **README Updates**: Updated tool counts, added workflow subset configurations, and enhanced setup guidance
30
+ - **Configuration Examples**: Added 5 workflow-focused environment configurations for optimal AI performance
31
+ - **API Coverage**: Documented comprehensive endpoint coverage while highlighting security exclusions
32
+
33
+ ### Security
34
+
35
+ - **Maintained Boundaries**: Preserved security exclusions for sensitive operations (API keys, user management, webhooks, financial data)
36
+ - **Curated Approach**: Continued read-first philosophy with carefully selected write operations
37
+ - **Input Validation**: Maintained existing security controls and validation patterns
38
+
39
+ ### Testing
40
+
41
+ - **Updated Assertions**: Fixed test assertions to match updated API operation names (listAlertsSources, getAlertsSource)
42
+ - **Comprehensive Coverage**: All 382 tests passing with expanded API surface
43
+ - **Security Validation**: Verified security boundaries remain intact with expanded tool set
44
+
45
+ ### Breaking Changes
46
+
47
+ - None - Fully backward compatible with existing configurations and user workflows
48
+
8
49
  ## [2.2.24] - Released 2026-04-22
9
50
 
10
51
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rootly-mcp-server
3
- Version: 2.2.24
3
+ Version: 2.3.0
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
@@ -350,7 +350,7 @@ Choose one transport per server process:
350
350
  - **SSE** endpoint path: `/sse`
351
351
  - **Code Mode (experimental)** endpoint path: `/mcp-codemode` in hosted dual-transport mode
352
352
 
353
- Both hosted and self-hosted deployments expose all tools by default (read and write) for consistency. To restrict to read-only tools, start the server with `--no-enable-write-tools` or set `ROOTLY_MCP_ENABLE_WRITE_TOOLS=false`.
353
+ Both hosted and self-hosted deployments expose the same curated tool surface by default, including the default write-enabled tools. To restrict that surface to read-only tools, start the server with `--no-enable-write-tools` or set `ROOTLY_MCP_ENABLE_WRITE_TOOLS=false`.
354
354
 
355
355
  To expose only a specific subset of MCP tools on a self-hosted deployment, set `ROOTLY_MCP_ENABLED_TOOLS` (or pass `--enabled-tools`) with a comma-separated allowlist of exact tool names, for example `list_incidents,getIncident,get_server_version`.
356
356
 
@@ -416,6 +416,70 @@ docker run -p 8000:8000 \
416
416
  rootly-mcp-server
417
417
  ```
418
418
 
419
+ ## Workflow-Focused Tool Subsets
420
+
421
+ With 150+ tools available, you may want to configure focused subsets for optimal AI agent performance. Use `ROOTLY_MCP_ENABLED_TOOLS` to activate specific workflows:
422
+
423
+ ### 🚨 Incident Response (25 tools)
424
+ *Essential tools for emergency responders and incident commanders*
425
+
426
+ ```bash
427
+ ROOTLY_MCP_ENABLED_TOOLS="listIncidents,getIncident,createIncident,updateIncident,search_incidents,find_related_incidents,suggest_solutions,createIncidentActionItem,listIncidentActionItems,updateIncidentFormFieldSelection,listTeams,getCurrentUser,listServices,listSeverities,getAlert,listAlerts,updateAlert,listEscalationPolicies,getEscalationPolicy,listOnCallRoles,listSchedules,getScheduleShifts,get_oncall_handoff_summary,get_shift_incidents,list_endpoints"
428
+ ```
429
+
430
+ ### 📅 On-Call Management (35 tools)
431
+ *For schedule coordinators and on-call managers*
432
+
433
+ ```bash
434
+ ROOTLY_MCP_ENABLED_TOOLS="listSchedules,getSchedule,updateSchedule,getScheduleShifts,listShifts,list_shifts,createScheduleRotation,updateScheduleRotation,listScheduleRotations,getScheduleRotation,listScheduleRotationUsers,updateScheduleRotationUser,createOnCallShadow,updateOnCallShadow,listOnCallShadows,createOverrideShift,updateOverrideShift,listOverrideShifts,listOnCallRoles,updateOnCallRole,get_oncall_schedule_summary,get_oncall_shift_metrics,check_oncall_health_risk,check_responder_availability,create_override_recommendation,listTeams,getTeam,listUsers,getUser,getCurrentUser,listEscalationPolicies,updateEscalationPolicy,listEscalationPaths,updateEscalationPath,listEscalationLevels"
435
+ ```
436
+
437
+ ### 📊 Monitoring & Alerting (40 tools)
438
+ *For platform teams setting up observability*
439
+
440
+ ```bash
441
+ ROOTLY_MCP_ENABLED_TOOLS="listAlerts,getAlert,updateAlert,createAlertGroup,updateAlertGroup,listAlertGroups,createAlertRoutingRule,updateAlertRoutingRule,listAlertRoutingRules,listAlertEvents,getAlertEvent,updateAlertEvent,createHeartbeat,updateHeartbeat,listHeartbeats,getHeartbeat,createPulse,updatePulse,listPulses,getPulse,createDashboard,updateDashboard,listDashboards,getDashboard,createDashboardPanel,updateDashboardPanel,listStatusPages,getStatusPage,updateStatusPage,createStatusPageTemplate,updateStatusPageTemplate,listCommunicationsTemplates,updateCommunicationsTemplate,createLiveCallRouter,updateLiveCallRouter,listServices,listTeams,getCurrentUser,listEnvironments,listSeverities,list_endpoints"
442
+ ```
443
+
444
+ ### 📋 Post-Incident Analysis (30 tools)
445
+ *For SREs doing retrospectives and process improvement*
446
+
447
+ ```bash
448
+ ROOTLY_MCP_ENABLED_TOOLS="getIncident,updateIncident,find_related_incidents,suggest_solutions,listIncidentActionItems,createIncidentActionItem,updateIncidentFormFieldSelection,createPostIncidentReview,updatePostIncidentReview,listPostIncidentReviews,getPostIncidentReview,createRetrospectiveStep,updateRetrospectiveStep,listRetrospectiveSteps,createRetrospectiveProcess,updateRetrospectiveProcess,listRetrospectiveProcesses,createPlaybook,updatePlaybook,listPlaybooks,getPlaybook,createPlaybookTask,updatePlaybookTask,listCauses,getCause,updateCause,listIncidentTypes,getIncidentType,updateIncidentType,getCurrentUser"
449
+ ```
450
+
451
+ ### 📈 Analytics & Reporting (15 tools)
452
+ *For leadership and metrics teams (read-only focus)*
453
+
454
+ ```bash
455
+ ROOTLY_MCP_ENABLED_TOOLS="listIncidents,search_incidents,collect_incidents,listTeams,listServices,listSchedules,get_oncall_shift_metrics,get_shift_incidents,listDashboards,getDashboard,listAlerts,listHeartbeats,listPulses,getCurrentUser,list_endpoints"
456
+ ```
457
+
458
+ ### Multiple MCP Instances for Different Teams
459
+
460
+ You can run multiple MCP instances with different tool subsets:
461
+
462
+ ```json
463
+ {
464
+ "mcpServers": {
465
+ "rootly-incident-response": {
466
+ "command": "uvx", "args": ["--from", "rootly-mcp-server", "rootly-mcp-server"],
467
+ "env": {
468
+ "ROOTLY_API_TOKEN": "<token>",
469
+ "ROOTLY_MCP_ENABLED_TOOLS": "listIncidents,getIncident,createIncident,find_related_incidents,suggest_solutions..."
470
+ }
471
+ },
472
+ "rootly-oncall-management": {
473
+ "command": "uvx", "args": ["--from", "rootly-mcp-server", "rootly-mcp-server"],
474
+ "env": {
475
+ "ROOTLY_API_TOKEN": "<token>",
476
+ "ROOTLY_MCP_ENABLED_TOOLS": "listSchedules,updateSchedule,createOverrideShift,get_oncall_shift_metrics..."
477
+ }
478
+ }
479
+ }
480
+ }
481
+ ```
482
+
419
483
  ### With uvx
420
484
 
421
485
  ```json
@@ -444,13 +508,13 @@ docker run -p 8000:8000 \
444
508
  - **Intelligent Incident Analysis**: Smart tools that analyze historical incident data
445
509
  - **`find_related_incidents`**: Uses TF-IDF similarity analysis to find historically similar incidents
446
510
  - **`suggest_solutions`**: Mines past incident resolutions to recommend actionable solutions
447
- - **MCP Resources**: Exposes incident and team data as structured resources for easy AI reference
511
+ - **MCP Resources**: Exposes incidents, teams, on-call status, and workflow guides as structured resources for AI context
448
512
  - **Intelligent Pattern Recognition**: Automatically identifies services, error types, and resolution patterns
449
513
  - **On-Call Health Integration**: Detects workload health risk in scheduled responders
450
514
 
451
515
  ## Supported Tools
452
516
 
453
- The default server configuration exposes **110 tools**.
517
+ The default server configuration exposes **150+ tools**.
454
518
 
455
519
  ### Custom Agentic Tools
456
520
 
@@ -477,41 +541,31 @@ The default server configuration exposes **110 tools**.
477
541
  ### OpenAPI-Generated Tools
478
542
 
479
543
  ```text
480
- attachAlert
481
- createAlert
482
- createEnvironment
483
- createEscalationLevel
484
- createEscalationLevelPaths
485
- createEscalationPath
486
- createEscalationPolicy
487
- createFunctionality
544
+ ListWorkflowRuns
488
545
  createIncidentActionItem
489
546
  createIncidentFormFieldSelection
490
- createIncidentType
491
- createOnCallRole
492
- createOnCallShadow
493
- createOverrideShift
494
- createSchedule
495
- createScheduleRotation
496
- createScheduleRotationActiveDay
497
- createScheduleRotationUser
498
- createService
499
- createSeverity
500
- createTeam
501
- createWorkflow
502
547
  createWorkflowTask
503
- deleteEscalationLevel
504
- deleteEscalationPath
505
- deleteEscalationPolicy
506
- deleteSchedule
507
- deleteScheduleRotation
508
548
  getAlert
549
+ getAlertEvent
550
+ getAlertGroup
551
+ getAlertRoutingRule
552
+ getAlertSource
553
+ getAlertUrgency
554
+ getCatalog
555
+ getCatalogEntity
556
+ getCause
509
557
  getCurrentUser
558
+ getCustomForm
510
559
  getEnvironment
511
560
  getEscalationLevel
512
561
  getEscalationPath
513
562
  getEscalationPolicy
563
+ getFormField
564
+ getFormFieldOption
514
565
  getFunctionality
566
+ getFunctionalityIncidentsChart
567
+ getFunctionalityUptimeChart
568
+ getIncidentActionItems
515
569
  getIncidentFormFieldSelection
516
570
  getIncidentType
517
571
  getOnCallRole
@@ -521,22 +575,42 @@ getSchedule
521
575
  getScheduleRotation
522
576
  getScheduleShifts
523
577
  getService
578
+ getServiceIncidentsChart
579
+ getServiceUptimeChart
524
580
  getSeverity
581
+ getStatusPage
582
+ getStatusPageTemplate
525
583
  getTeam
584
+ getTeamIncidentsChart
526
585
  getUser
527
586
  getWorkflow
587
+ getWorkflowFormFieldCondition
588
+ getWorkflowGroup
528
589
  getWorkflowTask
590
+ listAlertEvents
591
+ listAlertGroups
592
+ listAlertRoutingRules
593
+ listAlertSources
594
+ listAlertUrgencies
529
595
  listAlerts
596
+ listAllIncidentActionItems
597
+ listCatalogEntities
598
+ listCatalogs
599
+ listCauses
600
+ listCustomForms
530
601
  listEnvironments
531
602
  listEscalationLevels
532
603
  listEscalationLevelsPaths
533
604
  listEscalationPaths
534
605
  listEscalationPolicies
606
+ listFormFieldOptions
607
+ listFormFields
535
608
  listFunctionalities
536
609
  listIncidentActionItems
537
610
  listIncidentAlerts
538
611
  listIncidentFormFieldSelections
539
612
  listIncident_Types
613
+ listIncidents
540
614
  listOnCallRoles
541
615
  listOnCallShadows
542
616
  listOverrideShifts
@@ -547,17 +621,19 @@ listSchedules
547
621
  listServices
548
622
  listSeverities
549
623
  listShifts
624
+ listStatusPageTemplates
625
+ listStatusPages
550
626
  listTeams
551
627
  listUsers
628
+ listWorkflowFormFieldConditions
629
+ listWorkflowGroups
552
630
  listWorkflows
553
631
  listWorkflowTasks
554
- updateAlert
555
632
  updateEnvironment
556
633
  updateEscalationLevel
557
634
  updateEscalationPath
558
635
  updateEscalationPolicy
559
636
  updateFunctionality
560
- updateIncidentFormFieldSelection
561
637
  updateIncidentType
562
638
  updateOnCallRole
563
639
  updateOnCallShadow
@@ -567,13 +643,14 @@ updateScheduleRotation
567
643
  updateService
568
644
  updateSeverity
569
645
  updateTeam
570
- updateUser
571
646
  updateWorkflow
647
+ updateIncidentFormFieldSelection
572
648
  updateWorkflowTask
573
649
  ```
574
650
 
575
- Delete operations are intentionally scoped to screenshot coverage paths:
576
- `deleteSchedule`, `deleteScheduleRotation`, `deleteEscalationPolicy`, `deleteEscalationPath`, `deleteEscalationLevel`.
651
+ **Major Expansion**: This version includes 50+ new endpoints covering communications, dashboards, playbooks, post-incident reviews, monitoring, and advanced form management - while carefully excluding security-sensitive operations like API key management, user creation/deletion, role management, and webhook configuration.
652
+
653
+ Delete operations remain disabled in the default tool surface.
577
654
 
578
655
  ## On-Call Health Integration
579
656
 
@@ -670,6 +747,18 @@ Regional filtering shows only people on-call during business hours (9am-5pm) in
670
747
 
671
748
  Returns: `schedules` with `current_oncall`, `next_oncall`, and `shift_incidents`
672
749
 
750
+ ### MCP Resources for Context
751
+
752
+ AI agents can access these resources for situational awareness:
753
+
754
+ - **`incident://{incident_id}`** - Detailed incident information for specific incidents
755
+ - **`team://{team_id}`** - Team details including name, color, and metadata
756
+ - **`rootly://incidents`** - List of recent incidents for quick reference
757
+ - **`rootly://oncall-status`** - Current on-call status across all schedules (critical for incident response)
758
+ - **`rootly://workflow-guide`** - Step-by-step workflow guidance for common operations
759
+
760
+ Example usage: *"Check the current on-call status"* → AI reads `rootly://oncall-status` resource
761
+
673
762
  ### Shift Incidents
674
763
 
675
764
  Incidents during a time period, with filtering by severity/status/tags.
@@ -306,7 +306,7 @@ Choose one transport per server process:
306
306
  - **SSE** endpoint path: `/sse`
307
307
  - **Code Mode (experimental)** endpoint path: `/mcp-codemode` in hosted dual-transport mode
308
308
 
309
- Both hosted and self-hosted deployments expose all tools by default (read and write) for consistency. To restrict to read-only tools, start the server with `--no-enable-write-tools` or set `ROOTLY_MCP_ENABLE_WRITE_TOOLS=false`.
309
+ Both hosted and self-hosted deployments expose the same curated tool surface by default, including the default write-enabled tools. To restrict that surface to read-only tools, start the server with `--no-enable-write-tools` or set `ROOTLY_MCP_ENABLE_WRITE_TOOLS=false`.
310
310
 
311
311
  To expose only a specific subset of MCP tools on a self-hosted deployment, set `ROOTLY_MCP_ENABLED_TOOLS` (or pass `--enabled-tools`) with a comma-separated allowlist of exact tool names, for example `list_incidents,getIncident,get_server_version`.
312
312
 
@@ -372,6 +372,70 @@ docker run -p 8000:8000 \
372
372
  rootly-mcp-server
373
373
  ```
374
374
 
375
+ ## Workflow-Focused Tool Subsets
376
+
377
+ With 150+ tools available, you may want to configure focused subsets for optimal AI agent performance. Use `ROOTLY_MCP_ENABLED_TOOLS` to activate specific workflows:
378
+
379
+ ### 🚨 Incident Response (25 tools)
380
+ *Essential tools for emergency responders and incident commanders*
381
+
382
+ ```bash
383
+ ROOTLY_MCP_ENABLED_TOOLS="listIncidents,getIncident,createIncident,updateIncident,search_incidents,find_related_incidents,suggest_solutions,createIncidentActionItem,listIncidentActionItems,updateIncidentFormFieldSelection,listTeams,getCurrentUser,listServices,listSeverities,getAlert,listAlerts,updateAlert,listEscalationPolicies,getEscalationPolicy,listOnCallRoles,listSchedules,getScheduleShifts,get_oncall_handoff_summary,get_shift_incidents,list_endpoints"
384
+ ```
385
+
386
+ ### 📅 On-Call Management (35 tools)
387
+ *For schedule coordinators and on-call managers*
388
+
389
+ ```bash
390
+ ROOTLY_MCP_ENABLED_TOOLS="listSchedules,getSchedule,updateSchedule,getScheduleShifts,listShifts,list_shifts,createScheduleRotation,updateScheduleRotation,listScheduleRotations,getScheduleRotation,listScheduleRotationUsers,updateScheduleRotationUser,createOnCallShadow,updateOnCallShadow,listOnCallShadows,createOverrideShift,updateOverrideShift,listOverrideShifts,listOnCallRoles,updateOnCallRole,get_oncall_schedule_summary,get_oncall_shift_metrics,check_oncall_health_risk,check_responder_availability,create_override_recommendation,listTeams,getTeam,listUsers,getUser,getCurrentUser,listEscalationPolicies,updateEscalationPolicy,listEscalationPaths,updateEscalationPath,listEscalationLevels"
391
+ ```
392
+
393
+ ### 📊 Monitoring & Alerting (40 tools)
394
+ *For platform teams setting up observability*
395
+
396
+ ```bash
397
+ ROOTLY_MCP_ENABLED_TOOLS="listAlerts,getAlert,updateAlert,createAlertGroup,updateAlertGroup,listAlertGroups,createAlertRoutingRule,updateAlertRoutingRule,listAlertRoutingRules,listAlertEvents,getAlertEvent,updateAlertEvent,createHeartbeat,updateHeartbeat,listHeartbeats,getHeartbeat,createPulse,updatePulse,listPulses,getPulse,createDashboard,updateDashboard,listDashboards,getDashboard,createDashboardPanel,updateDashboardPanel,listStatusPages,getStatusPage,updateStatusPage,createStatusPageTemplate,updateStatusPageTemplate,listCommunicationsTemplates,updateCommunicationsTemplate,createLiveCallRouter,updateLiveCallRouter,listServices,listTeams,getCurrentUser,listEnvironments,listSeverities,list_endpoints"
398
+ ```
399
+
400
+ ### 📋 Post-Incident Analysis (30 tools)
401
+ *For SREs doing retrospectives and process improvement*
402
+
403
+ ```bash
404
+ ROOTLY_MCP_ENABLED_TOOLS="getIncident,updateIncident,find_related_incidents,suggest_solutions,listIncidentActionItems,createIncidentActionItem,updateIncidentFormFieldSelection,createPostIncidentReview,updatePostIncidentReview,listPostIncidentReviews,getPostIncidentReview,createRetrospectiveStep,updateRetrospectiveStep,listRetrospectiveSteps,createRetrospectiveProcess,updateRetrospectiveProcess,listRetrospectiveProcesses,createPlaybook,updatePlaybook,listPlaybooks,getPlaybook,createPlaybookTask,updatePlaybookTask,listCauses,getCause,updateCause,listIncidentTypes,getIncidentType,updateIncidentType,getCurrentUser"
405
+ ```
406
+
407
+ ### 📈 Analytics & Reporting (15 tools)
408
+ *For leadership and metrics teams (read-only focus)*
409
+
410
+ ```bash
411
+ ROOTLY_MCP_ENABLED_TOOLS="listIncidents,search_incidents,collect_incidents,listTeams,listServices,listSchedules,get_oncall_shift_metrics,get_shift_incidents,listDashboards,getDashboard,listAlerts,listHeartbeats,listPulses,getCurrentUser,list_endpoints"
412
+ ```
413
+
414
+ ### Multiple MCP Instances for Different Teams
415
+
416
+ You can run multiple MCP instances with different tool subsets:
417
+
418
+ ```json
419
+ {
420
+ "mcpServers": {
421
+ "rootly-incident-response": {
422
+ "command": "uvx", "args": ["--from", "rootly-mcp-server", "rootly-mcp-server"],
423
+ "env": {
424
+ "ROOTLY_API_TOKEN": "<token>",
425
+ "ROOTLY_MCP_ENABLED_TOOLS": "listIncidents,getIncident,createIncident,find_related_incidents,suggest_solutions..."
426
+ }
427
+ },
428
+ "rootly-oncall-management": {
429
+ "command": "uvx", "args": ["--from", "rootly-mcp-server", "rootly-mcp-server"],
430
+ "env": {
431
+ "ROOTLY_API_TOKEN": "<token>",
432
+ "ROOTLY_MCP_ENABLED_TOOLS": "listSchedules,updateSchedule,createOverrideShift,get_oncall_shift_metrics..."
433
+ }
434
+ }
435
+ }
436
+ }
437
+ ```
438
+
375
439
  ### With uvx
376
440
 
377
441
  ```json
@@ -400,13 +464,13 @@ docker run -p 8000:8000 \
400
464
  - **Intelligent Incident Analysis**: Smart tools that analyze historical incident data
401
465
  - **`find_related_incidents`**: Uses TF-IDF similarity analysis to find historically similar incidents
402
466
  - **`suggest_solutions`**: Mines past incident resolutions to recommend actionable solutions
403
- - **MCP Resources**: Exposes incident and team data as structured resources for easy AI reference
467
+ - **MCP Resources**: Exposes incidents, teams, on-call status, and workflow guides as structured resources for AI context
404
468
  - **Intelligent Pattern Recognition**: Automatically identifies services, error types, and resolution patterns
405
469
  - **On-Call Health Integration**: Detects workload health risk in scheduled responders
406
470
 
407
471
  ## Supported Tools
408
472
 
409
- The default server configuration exposes **110 tools**.
473
+ The default server configuration exposes **150+ tools**.
410
474
 
411
475
  ### Custom Agentic Tools
412
476
 
@@ -433,41 +497,31 @@ The default server configuration exposes **110 tools**.
433
497
  ### OpenAPI-Generated Tools
434
498
 
435
499
  ```text
436
- attachAlert
437
- createAlert
438
- createEnvironment
439
- createEscalationLevel
440
- createEscalationLevelPaths
441
- createEscalationPath
442
- createEscalationPolicy
443
- createFunctionality
500
+ ListWorkflowRuns
444
501
  createIncidentActionItem
445
502
  createIncidentFormFieldSelection
446
- createIncidentType
447
- createOnCallRole
448
- createOnCallShadow
449
- createOverrideShift
450
- createSchedule
451
- createScheduleRotation
452
- createScheduleRotationActiveDay
453
- createScheduleRotationUser
454
- createService
455
- createSeverity
456
- createTeam
457
- createWorkflow
458
503
  createWorkflowTask
459
- deleteEscalationLevel
460
- deleteEscalationPath
461
- deleteEscalationPolicy
462
- deleteSchedule
463
- deleteScheduleRotation
464
504
  getAlert
505
+ getAlertEvent
506
+ getAlertGroup
507
+ getAlertRoutingRule
508
+ getAlertSource
509
+ getAlertUrgency
510
+ getCatalog
511
+ getCatalogEntity
512
+ getCause
465
513
  getCurrentUser
514
+ getCustomForm
466
515
  getEnvironment
467
516
  getEscalationLevel
468
517
  getEscalationPath
469
518
  getEscalationPolicy
519
+ getFormField
520
+ getFormFieldOption
470
521
  getFunctionality
522
+ getFunctionalityIncidentsChart
523
+ getFunctionalityUptimeChart
524
+ getIncidentActionItems
471
525
  getIncidentFormFieldSelection
472
526
  getIncidentType
473
527
  getOnCallRole
@@ -477,22 +531,42 @@ getSchedule
477
531
  getScheduleRotation
478
532
  getScheduleShifts
479
533
  getService
534
+ getServiceIncidentsChart
535
+ getServiceUptimeChart
480
536
  getSeverity
537
+ getStatusPage
538
+ getStatusPageTemplate
481
539
  getTeam
540
+ getTeamIncidentsChart
482
541
  getUser
483
542
  getWorkflow
543
+ getWorkflowFormFieldCondition
544
+ getWorkflowGroup
484
545
  getWorkflowTask
546
+ listAlertEvents
547
+ listAlertGroups
548
+ listAlertRoutingRules
549
+ listAlertSources
550
+ listAlertUrgencies
485
551
  listAlerts
552
+ listAllIncidentActionItems
553
+ listCatalogEntities
554
+ listCatalogs
555
+ listCauses
556
+ listCustomForms
486
557
  listEnvironments
487
558
  listEscalationLevels
488
559
  listEscalationLevelsPaths
489
560
  listEscalationPaths
490
561
  listEscalationPolicies
562
+ listFormFieldOptions
563
+ listFormFields
491
564
  listFunctionalities
492
565
  listIncidentActionItems
493
566
  listIncidentAlerts
494
567
  listIncidentFormFieldSelections
495
568
  listIncident_Types
569
+ listIncidents
496
570
  listOnCallRoles
497
571
  listOnCallShadows
498
572
  listOverrideShifts
@@ -503,17 +577,19 @@ listSchedules
503
577
  listServices
504
578
  listSeverities
505
579
  listShifts
580
+ listStatusPageTemplates
581
+ listStatusPages
506
582
  listTeams
507
583
  listUsers
584
+ listWorkflowFormFieldConditions
585
+ listWorkflowGroups
508
586
  listWorkflows
509
587
  listWorkflowTasks
510
- updateAlert
511
588
  updateEnvironment
512
589
  updateEscalationLevel
513
590
  updateEscalationPath
514
591
  updateEscalationPolicy
515
592
  updateFunctionality
516
- updateIncidentFormFieldSelection
517
593
  updateIncidentType
518
594
  updateOnCallRole
519
595
  updateOnCallShadow
@@ -523,13 +599,14 @@ updateScheduleRotation
523
599
  updateService
524
600
  updateSeverity
525
601
  updateTeam
526
- updateUser
527
602
  updateWorkflow
603
+ updateIncidentFormFieldSelection
528
604
  updateWorkflowTask
529
605
  ```
530
606
 
531
- Delete operations are intentionally scoped to screenshot coverage paths:
532
- `deleteSchedule`, `deleteScheduleRotation`, `deleteEscalationPolicy`, `deleteEscalationPath`, `deleteEscalationLevel`.
607
+ **Major Expansion**: This version includes 50+ new endpoints covering communications, dashboards, playbooks, post-incident reviews, monitoring, and advanced form management - while carefully excluding security-sensitive operations like API key management, user creation/deletion, role management, and webhook configuration.
608
+
609
+ Delete operations remain disabled in the default tool surface.
533
610
 
534
611
  ## On-Call Health Integration
535
612
 
@@ -626,6 +703,18 @@ Regional filtering shows only people on-call during business hours (9am-5pm) in
626
703
 
627
704
  Returns: `schedules` with `current_oncall`, `next_oncall`, and `shift_incidents`
628
705
 
706
+ ### MCP Resources for Context
707
+
708
+ AI agents can access these resources for situational awareness:
709
+
710
+ - **`incident://{incident_id}`** - Detailed incident information for specific incidents
711
+ - **`team://{team_id}`** - Team details including name, color, and metadata
712
+ - **`rootly://incidents`** - List of recent incidents for quick reference
713
+ - **`rootly://oncall-status`** - Current on-call status across all schedules (critical for incident response)
714
+ - **`rootly://workflow-guide`** - Step-by-step workflow guidance for common operations
715
+
716
+ Example usage: *"Check the current on-call status"* → AI reads `rootly://oncall-status` resource
717
+
629
718
  ### Shift Incidents
630
719
 
631
720
  Incidents during a time period, with filtering by severity/status/tags.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rootly-mcp-server"
3
- version = "2.2.24"
3
+ version = "2.3.0"
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"