ha-mcp-dev 7.4.1.dev457__tar.gz → 7.4.1.dev458__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 (108) hide show
  1. {ha_mcp_dev-7.4.1.dev457/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.4.1.dev458}/PKG-INFO +1 -1
  2. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/pyproject.toml +1 -1
  3. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_traces.py +52 -7
  4. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  5. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/LICENSE +0 -0
  6. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/MANIFEST.in +0 -0
  7. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/README.md +0 -0
  8. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/setup.cfg +0 -0
  9. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/__init__.py +0 -0
  10. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/__main__.py +0 -0
  11. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/_pypi_marker +0 -0
  12. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/_version.py +0 -0
  13. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/auth/__init__.py +0 -0
  14. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/auth/consent_form.py +0 -0
  15. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/auth/provider.py +0 -0
  16. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/client/__init__.py +0 -0
  17. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/client/rest_client.py +0 -0
  18. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/client/websocket_client.py +0 -0
  19. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/client/websocket_listener.py +0 -0
  20. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/config.py +0 -0
  21. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/errors.py +0 -0
  22. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/py.typed +0 -0
  23. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  24. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  25. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  26. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  27. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  28. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  29. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  30. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  31. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  32. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  33. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
  34. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  35. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  36. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  37. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  38. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  39. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  40. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  41. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  42. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  43. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/server.py +0 -0
  44. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/settings_ui.py +0 -0
  45. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/smoke_test.py +0 -0
  46. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/__init__.py +0 -0
  47. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/backup.py +0 -0
  48. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  49. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/device_control.py +0 -0
  50. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/enhanced.py +0 -0
  51. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/helpers.py +0 -0
  52. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/reference_validator.py +0 -0
  53. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/registry.py +0 -0
  54. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/smart_search.py +0 -0
  55. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_addons.py +0 -0
  56. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_areas.py +0 -0
  57. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  58. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  59. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_calendar.py +0 -0
  60. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_camera.py +0 -0
  61. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_categories.py +0 -0
  62. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_code.py +0 -0
  63. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  64. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  65. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
  66. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  67. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  68. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_energy.py +0 -0
  69. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_entities.py +0 -0
  70. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  71. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_groups.py +0 -0
  72. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_hacs.py +0 -0
  73. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_history.py +0 -0
  74. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_integrations.py +0 -0
  75. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_labels.py +0 -0
  76. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
  77. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_registry.py +0 -0
  78. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_resources.py +0 -0
  79. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_search.py +0 -0
  80. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_service.py +0 -0
  81. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_services.py +0 -0
  82. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_system.py +0 -0
  83. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_todo.py +0 -0
  84. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_updates.py +0 -0
  85. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_utility.py +0 -0
  86. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  87. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  88. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/tools_zones.py +0 -0
  89. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/tools/util_helpers.py +0 -0
  90. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/transforms/__init__.py +0 -0
  91. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/transforms/categorized_search.py +0 -0
  92. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/__init__.py +0 -0
  93. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/config_hash.py +0 -0
  94. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/data_paths.py +0 -0
  95. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/domain_handlers.py +0 -0
  96. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  97. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  98. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/operation_manager.py +0 -0
  99. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/python_sandbox.py +0 -0
  100. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp/utils/usage_logger.py +0 -0
  101. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  102. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  103. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  104. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  105. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  106. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/tests/__init__.py +0 -0
  107. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/tests/test_constants.py +0 -0
  108. {ha_mcp_dev-7.4.1.dev457 → ha_mcp_dev-7.4.1.dev458}/tests/test_env_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 7.4.1.dev457
3
+ Version: 7.4.1.dev458
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Author-email: Julien <github@qc-h.net>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "7.4.1.dev457"
7
+ version = "7.4.1.dev458"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.14"
@@ -7,7 +7,7 @@ to help debug automation and script issues.
7
7
 
8
8
  import json
9
9
  import logging
10
- from typing import Annotated, Any
10
+ from typing import Annotated, Any, Literal
11
11
 
12
12
  from fastmcp import Context
13
13
  from fastmcp.exceptions import ToolError
@@ -63,7 +63,7 @@ class TraceTools:
63
63
  limit: Annotated[
64
64
  int,
65
65
  Field(
66
- description="Maximum number of traces to return when listing (default: 10, max: 50)",
66
+ description="Maximum number of traces to return when listing (default: 10, max: 50).",
67
67
  default=10,
68
68
  ge=1,
69
69
  le=50,
@@ -94,6 +94,21 @@ class TraceTools:
94
94
  default=None,
95
95
  ),
96
96
  ] = None,
97
+ offset: Annotated[
98
+ int,
99
+ Field(
100
+ description="Number of traces to skip from the start of the requested order. Use with `limit` to page through stored traces when `total_available > limit`.",
101
+ default=0,
102
+ ge=0,
103
+ ),
104
+ ] = 0,
105
+ order: Annotated[
106
+ Literal["newest", "oldest"],
107
+ Field(
108
+ description="Order traces are returned in. 'newest' (default) returns most-recent first; 'oldest' returns chronological-first.",
109
+ default="newest",
110
+ ),
111
+ ] = "newest",
97
112
  ctx: Context | None = None,
98
113
  ) -> dict[str, Any]:
99
114
  """
@@ -111,6 +126,8 @@ class TraceTools:
111
126
  1. List recent traces (omit run_id):
112
127
  ha_get_automation_traces("automation.motion_light")
113
128
  Returns a summary of recent execution runs with timestamps, triggers, and status.
129
+ Use `offset` to page deeper when `has_more` is true, or `order="oldest"` to
130
+ start from the earliest stored trace instead of the most recent.
114
131
 
115
132
  2. Get detailed trace (provide run_id):
116
133
  ha_get_automation_traces("automation.motion_light", run_id="1705312800.123456")
@@ -268,7 +285,12 @@ class TraceTools:
268
285
  ctx, progress=3, total=3, message="diagnostics complete"
269
286
  )
270
287
  return _format_trace_list(
271
- automation_id, traces_data, limit, diagnostics
288
+ automation_id,
289
+ traces_data,
290
+ limit,
291
+ diagnostics,
292
+ offset=offset,
293
+ order=order,
272
294
  )
273
295
 
274
296
  await safe_progress(
@@ -277,7 +299,13 @@ class TraceTools:
277
299
  total=3,
278
300
  message=f"listed {len(traces_data)} traces",
279
301
  )
280
- return _format_trace_list(automation_id, traces_data, limit)
302
+ return _format_trace_list(
303
+ automation_id,
304
+ traces_data,
305
+ limit,
306
+ offset=offset,
307
+ order=order,
308
+ )
281
309
 
282
310
  finally:
283
311
  await ws_client.disconnect()
@@ -463,18 +491,32 @@ def _format_trace_list(
463
491
  traces: list[dict[str, Any]],
464
492
  limit: int,
465
493
  diagnostics: dict[str, Any] | None = None,
494
+ *,
495
+ offset: int = 0,
496
+ order: Literal["newest", "oldest"] = "newest",
466
497
  ) -> dict[str, Any]:
467
498
  """Format trace list for AI consumption.
468
499
 
469
500
  Args:
470
501
  automation_id: The automation or script entity_id
471
- traces: List of trace data from Home Assistant
502
+ traces: List of trace data from Home Assistant (oldest-first)
472
503
  limit: Maximum number of traces to include
473
504
  diagnostics: Optional diagnostic information when traces are empty
505
+ offset: Number of traces to skip from the start of the requested order
506
+ order: 'newest' (default) returns most-recent first; 'oldest' chronological
474
507
  """
475
- formatted_traces = []
508
+ # HA's trace/list returns traces oldest-first. Pick a window from the end
509
+ # for newest-first, or from the start for oldest-first, with offset for
510
+ # pagination through stored traces beyond `limit`.
511
+ if order == "newest":
512
+ end = len(traces) - offset
513
+ start = max(end - limit, 0)
514
+ window = list(reversed(traces[start:end])) if end > 0 else []
515
+ else:
516
+ window = traces[offset:offset + limit]
476
517
 
477
- for trace in traces[:limit]:
518
+ formatted_traces = []
519
+ for trace in window:
478
520
  # Extract key information from trace
479
521
  trace_info: dict[str, Any] = {
480
522
  "run_id": trace.get("run_id"),
@@ -503,6 +545,9 @@ def _format_trace_list(
503
545
  "automation_id": automation_id,
504
546
  "trace_count": len(formatted_traces),
505
547
  "total_available": len(traces),
548
+ "offset": offset,
549
+ "order": order,
550
+ "has_more": offset + len(formatted_traces) < len(traces),
506
551
  "traces": formatted_traces,
507
552
  "hint": "Use run_id with this tool to get detailed trace information",
508
553
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 7.4.1.dev457
3
+ Version: 7.4.1.dev458
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Author-email: Julien <github@qc-h.net>
6
6
  License: MIT