devhelm-mcp-server 0.2.0__tar.gz → 0.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 (37) hide show
  1. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/PKG-INFO +2 -2
  2. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/docs/openapi/monitoring-api.json +8 -8
  3. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/pyproject.toml +6 -6
  4. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/status_pages.py +24 -0
  5. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/tests/test_tools.py +2 -0
  6. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/uv.lock +5 -5
  7. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/.github/workflows/ci.yml +0 -0
  8. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/.github/workflows/release.yml +0 -0
  9. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/.github/workflows/spec-check.yml +0 -0
  10. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/.gitignore +0 -0
  11. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/LICENSE +0 -0
  12. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/Makefile +0 -0
  13. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/README.md +0 -0
  14. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/docker/Dockerfile +0 -0
  15. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/scripts/regen-from.sh +0 -0
  16. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/scripts/release.sh +0 -0
  17. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/__init__.py +0 -0
  18. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/client.py +0 -0
  19. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/server.py +0 -0
  20. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/__init__.py +0 -0
  21. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/alert_channels.py +0 -0
  22. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/api_keys.py +0 -0
  23. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/dependencies.py +0 -0
  24. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/deploy_lock.py +0 -0
  25. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/environments.py +0 -0
  26. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/incidents.py +0 -0
  27. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/monitors.py +0 -0
  28. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/notification_policies.py +0 -0
  29. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/resource_groups.py +0 -0
  30. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/secrets.py +0 -0
  31. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/status.py +0 -0
  32. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/tags.py +0 -0
  33. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/src/devhelm_mcp/tools/webhooks.py +0 -0
  34. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/tests/__init__.py +0 -0
  35. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/tests/run_mcp.py +0 -0
  36. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/tests/test_client.py +0 -0
  37. {devhelm_mcp_server-0.2.0 → devhelm_mcp_server-0.3.0}/tests/test_typed_schemas.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devhelm-mcp-server
3
- Version: 0.2.0
3
+ Version: 0.3.0
4
4
  Summary: DevHelm MCP server — AI agent access to monitors, incidents, alerting, and more
5
5
  Project-URL: Homepage, https://devhelm.io
6
6
  Project-URL: Repository, https://github.com/devhelmhq/mcp-server
@@ -18,7 +18,7 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Topic :: Software Development :: Libraries
20
20
  Requires-Python: >=3.11
21
- Requires-Dist: devhelm>=0.2.0
21
+ Requires-Dist: devhelm>=0.3.0
22
22
  Requires-Dist: fastmcp>=2.0.0
23
23
  Description-Content-Type: text/markdown
24
24
 
@@ -22744,9 +22744,9 @@
22744
22744
  "format": "int32",
22745
22745
  "nullable": true
22746
22746
  },
22747
- "collapsed": {
22747
+ "defaultOpen": {
22748
22748
  "type": "boolean",
22749
- "description": "Whether the group is collapsed by default (default: true)",
22749
+ "description": "Initial expand/collapse state when a visitor first loads the page; renderer may auto-expand on active incidents (default: true)",
22750
22750
  "nullable": true
22751
22751
  }
22752
22752
  }
@@ -22816,7 +22816,7 @@
22816
22816
  },
22817
22817
  "startDate": {
22818
22818
  "type": "string",
22819
- "description": "Date from which to start showing uptime data",
22819
+ "description": "Date from which to start showing uptime; defaults to component creation. Set earlier to backdate (e.g. launch day); clamped at the monitor's createdAt for MONITOR-type components",
22820
22820
  "format": "date",
22821
22821
  "nullable": true
22822
22822
  }
@@ -29659,7 +29659,7 @@
29659
29659
  "updatedAt",
29660
29660
  "displayOrder",
29661
29661
  "pageOrder",
29662
- "collapsed"
29662
+ "defaultOpen"
29663
29663
  ],
29664
29664
  "type": "object",
29665
29665
  "properties": {
@@ -29686,7 +29686,7 @@
29686
29686
  "type": "integer",
29687
29687
  "format": "int32"
29688
29688
  },
29689
- "collapsed": {
29689
+ "defaultOpen": {
29690
29690
  "type": "boolean"
29691
29691
  },
29692
29692
  "components": {
@@ -32405,9 +32405,9 @@
32405
32405
  "format": "int32",
32406
32406
  "nullable": true
32407
32407
  },
32408
- "collapsed": {
32408
+ "defaultOpen": {
32409
32409
  "type": "boolean",
32410
- "description": "Whether the group is collapsed by default; null preserves current",
32410
+ "description": "Initial expand/collapse state on first page load; null preserves current. Renderer may auto-expand on active incidents",
32411
32411
  "nullable": true
32412
32412
  }
32413
32413
  }
@@ -32458,7 +32458,7 @@
32458
32458
  },
32459
32459
  "startDate": {
32460
32460
  "type": "string",
32461
- "description": "Date from which to start showing uptime data; null preserves current",
32461
+ "description": "Date from which to start showing uptime; null preserves current. Bars never extend earlier than the underlying monitor's createdAt regardless of value",
32462
32462
  "format": "date",
32463
32463
  "nullable": true
32464
32464
  }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "devhelm-mcp-server"
3
- version = "0.2.0"
3
+ version = "0.3.0"
4
4
  description = "DevHelm MCP server — AI agent access to monitors, incidents, alerting, and more"
5
5
  authors = [{ name = "DevHelm", email = "hello@devhelm.io" }]
6
6
  license = "MIT"
@@ -19,10 +19,10 @@ classifiers = [
19
19
  ]
20
20
 
21
21
  dependencies = [
22
- # Floor bumped to 0.1.3 because mcp-server depends on the strict error
23
- # taxonomy (DevhelmValidationError / DevhelmApiError / DevhelmTransportError)
24
- # and `extra='forbid'` response validation introduced in that release.
25
- "devhelm>=0.2.0",
22
+ # Floor bumped to 0.2.1 for `StatusPages.reorder_layout` and the
23
+ # `Incidents.delete` removal (which the `reorder_status_page_layout`
24
+ # tool below depends on, and which the parity check requires).
25
+ "devhelm>=0.3.0",
26
26
  "fastmcp>=2.0.0",
27
27
  ]
28
28
 
@@ -64,4 +64,4 @@ dev = [
64
64
  "pytest>=8.0",
65
65
  "ruff>=0.8",
66
66
  "twine>=5.0",
67
- ]
67
+ ]
@@ -13,6 +13,7 @@ from devhelm.types import (
13
13
  CreateStatusPageIncidentUpdateRequest,
14
14
  CreateStatusPageRequest,
15
15
  ReorderComponentsRequest,
16
+ ReorderPageLayoutRequest,
16
17
  UpdateStatusPageComponentGroupRequest,
17
18
  UpdateStatusPageComponentRequest,
18
19
  UpdateStatusPageIncidentRequest,
@@ -85,6 +86,29 @@ def register(mcp: FastMCP) -> None:
85
86
  except DevhelmError as e:
86
87
  return format_error(e)
87
88
 
89
+ @mcp.tool()
90
+ def reorder_status_page_layout(
91
+ api_token: str, page_id: str, body: ReorderPageLayoutRequest
92
+ ) -> str:
93
+ """Batch-reorder a status page's full layout.
94
+
95
+ Required: sections — top-level layout in their new order, where each
96
+ entry is either {kind:"component", componentId} or
97
+ {kind:"group", groupId}. Use ``groupOrders`` (optional) to also
98
+ reorder components within specific groups; only include groups whose
99
+ internal order changed. The full top-level set must be provided —
100
+ partial reorders are rejected by the API.
101
+
102
+ Use this for "drag-and-drop" layout edits that touch both groups and
103
+ ungrouped components. To reorder components within a single group
104
+ only, prefer ``reorder_status_page_components``.
105
+ """
106
+ try:
107
+ _sp(api_token).reorder_layout(page_id, as_payload(body))
108
+ return "Status page layout reordered successfully."
109
+ except DevhelmError as e:
110
+ return format_error(e)
111
+
88
112
  # ── Components ────────────────────────────────────────────────────────
89
113
 
90
114
  @mcp.tool()
@@ -87,6 +87,7 @@ EXPECTED_TOOLS = [
87
87
  "create_status_page",
88
88
  "update_status_page",
89
89
  "delete_status_page",
90
+ "reorder_status_page_layout",
90
91
  "list_status_page_components",
91
92
  "create_status_page_component",
92
93
  "update_status_page_component",
@@ -157,6 +158,7 @@ STATUS_PAGE_CRUD = [
157
158
  "create_status_page",
158
159
  "update_status_page",
159
160
  "delete_status_page",
161
+ "reorder_status_page_layout",
160
162
  ]
161
163
 
162
164
  STATUS_PAGE_COMPONENT_TOOLS = [
@@ -388,20 +388,20 @@ wheels = [
388
388
 
389
389
  [[package]]
390
390
  name = "devhelm"
391
- version = "0.2.0"
391
+ version = "0.3.0"
392
392
  source = { registry = "https://pypi.org/simple" }
393
393
  dependencies = [
394
394
  { name = "httpx" },
395
395
  { name = "pydantic", extra = ["email"] },
396
396
  ]
397
- sdist = { url = "https://files.pythonhosted.org/packages/7e/f2/5af595f2eaa3696874f5d93aae2a7efd3d06abf36d38f56cfb1a5824f632/devhelm-0.2.0.tar.gz", hash = "sha256:3160c5f6098756bf80a49cc2489ed809797790f209214376091c8e560532fba8", size = 223354, upload-time = "2026-04-22T08:30:19.004Z" }
397
+ sdist = { url = "https://files.pythonhosted.org/packages/7d/e0/5e2f56bb128fa312311ceac5de96b71db7ac6a354bebe4439999ebd46a7c/devhelm-0.3.0.tar.gz", hash = "sha256:cabad8c888e73e26ecf5fe1243cbd96d13368193453d437db60e3ab611f3e46b", size = 223980, upload-time = "2026-04-22T15:28:53.364Z" }
398
398
  wheels = [
399
- { url = "https://files.pythonhosted.org/packages/c1/73/fed4d13b648b5c2bdc06a944bcb7d1787b40778a8ff98fd05c41b88212f7/devhelm-0.2.0-py3-none-any.whl", hash = "sha256:655772d06931fc65a823230346d581a6c93be23c5ee9158039f3e9ac4f30c9bb", size = 67575, upload-time = "2026-04-22T08:30:17.808Z" },
399
+ { url = "https://files.pythonhosted.org/packages/48/18/43ae849559fb68b524b06a840751a12233e4237aa27e44184d1a45106521/devhelm-0.3.0-py3-none-any.whl", hash = "sha256:da4053b7f8a6016182beae57038870d0dd490ed5e57ffc0158c3724d01e70c82", size = 67920, upload-time = "2026-04-22T15:28:52.13Z" },
400
400
  ]
401
401
 
402
402
  [[package]]
403
403
  name = "devhelm-mcp-server"
404
- version = "0.2.0"
404
+ version = "0.3.0"
405
405
  source = { editable = "." }
406
406
  dependencies = [
407
407
  { name = "devhelm" },
@@ -419,7 +419,7 @@ dev = [
419
419
 
420
420
  [package.metadata]
421
421
  requires-dist = [
422
- { name = "devhelm", specifier = ">=0.2.0" },
422
+ { name = "devhelm", specifier = ">=0.3.0" },
423
423
  { name = "fastmcp", specifier = ">=2.0.0" },
424
424
  ]
425
425