ha-mcp-dev 7.5.0.dev561__tar.gz → 7.5.0.dev563__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 (113) hide show
  1. {ha_mcp_dev-7.5.0.dev561/src/ha_mcp_dev.egg-info → ha_mcp_dev-7.5.0.dev563}/PKG-INFO +1 -1
  2. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/pyproject.toml +1 -1
  3. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/__init__.py +0 -2
  4. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/errors.py +0 -14
  5. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_config_dashboards.py +10 -8
  6. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_resources.py +5 -4
  7. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563/src/ha_mcp_dev.egg-info}/PKG-INFO +1 -1
  8. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/LICENSE +0 -0
  9. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/MANIFEST.in +0 -0
  10. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/README.md +0 -0
  11. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/setup.cfg +0 -0
  12. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/__main__.py +0 -0
  13. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/_pypi_marker +0 -0
  14. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/_version.py +0 -0
  15. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/auth/__init__.py +0 -0
  16. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/auth/consent_form.py +0 -0
  17. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/auth/provider.py +0 -0
  18. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/client/__init__.py +0 -0
  19. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/client/rest_client.py +0 -0
  20. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/client/supervisor_client.py +0 -0
  21. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/client/websocket_client.py +0 -0
  22. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/client/websocket_listener.py +0 -0
  23. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/config.py +0 -0
  24. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/py.typed +0 -0
  25. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/.claude/settings.json +0 -0
  26. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/.claude-plugin/marketplace.json +0 -0
  27. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/.claude-plugin/plugin.json +0 -0
  28. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/.github/ISSUE_TEMPLATE/skill-rca.md +0 -0
  29. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/.github/pull_request_template.md +0 -0
  30. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/AGENTS.md +0 -0
  31. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/CLAUDE.md +0 -0
  32. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/CONTRIBUTING.md +0 -0
  33. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  34. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/README.md +0 -0
  35. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  36. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/evals/evals.json +0 -0
  37. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-patterns.md +0 -0
  38. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  39. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  40. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  41. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  42. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  43. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  44. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  45. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  46. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  47. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/server.py +0 -0
  48. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/settings_ui.py +0 -0
  49. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/smoke_test.py +0 -0
  50. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/__init__.py +0 -0
  51. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/backup.py +0 -0
  52. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  53. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/device_control.py +0 -0
  54. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/enhanced.py +0 -0
  55. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/helpers.py +0 -0
  56. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/reference_validator.py +0 -0
  57. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/registry.py +0 -0
  58. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/smart_search.py +0 -0
  59. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_addons.py +0 -0
  60. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_areas.py +0 -0
  61. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  62. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_bug_report.py +0 -0
  63. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_calendar.py +0 -0
  64. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_camera.py +0 -0
  65. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_categories.py +0 -0
  66. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_code.py +0 -0
  67. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  68. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_config_entry_flow.py +0 -0
  69. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  70. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  71. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  72. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_energy.py +0 -0
  73. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_entities.py +0 -0
  74. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  75. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_groups.py +0 -0
  76. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_hacs.py +0 -0
  77. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_history.py +0 -0
  78. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_integrations.py +0 -0
  79. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_labels.py +0 -0
  80. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_mcp_component.py +0 -0
  81. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_registry.py +0 -0
  82. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_search.py +0 -0
  83. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_service.py +0 -0
  84. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_services.py +0 -0
  85. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_system.py +0 -0
  86. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_todo.py +0 -0
  87. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_traces.py +0 -0
  88. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_updates.py +0 -0
  89. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_utility.py +0 -0
  90. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  91. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  92. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/tools_zones.py +0 -0
  93. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/tools/util_helpers.py +0 -0
  94. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/transforms/__init__.py +0 -0
  95. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/transforms/categorized_search.py +0 -0
  96. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  97. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/__init__.py +0 -0
  98. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/config_hash.py +0 -0
  99. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/data_paths.py +0 -0
  100. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/domain_handlers.py +0 -0
  101. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  102. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  103. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/operation_manager.py +0 -0
  104. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/python_sandbox.py +0 -0
  105. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp/utils/usage_logger.py +0 -0
  106. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp_dev.egg-info/SOURCES.txt +0 -0
  107. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp_dev.egg-info/dependency_links.txt +0 -0
  108. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp_dev.egg-info/entry_points.txt +0 -0
  109. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp_dev.egg-info/requires.txt +0 -0
  110. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/src/ha_mcp_dev.egg-info/top_level.txt +0 -0
  111. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/tests/__init__.py +0 -0
  112. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/tests/test_constants.py +0 -0
  113. {ha_mcp_dev-7.5.0.dev561 → ha_mcp_dev-7.5.0.dev563}/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.5.0.dev561
3
+ Version: 7.5.0.dev563
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.5.0.dev561"
7
+ version = "7.5.0.dev563"
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"
@@ -21,7 +21,6 @@ from .errors import (
21
21
  create_connection_error,
22
22
  create_entity_not_found_error,
23
23
  create_error_response,
24
- create_resource_not_found_error,
25
24
  create_service_error,
26
25
  create_timeout_error,
27
26
  create_validation_error,
@@ -46,7 +45,6 @@ __all__ = [
46
45
  "create_validation_error",
47
46
  "create_config_error",
48
47
  "create_timeout_error",
49
- "create_resource_not_found_error",
50
48
  "is_error_response",
51
49
  "get_error_code",
52
50
  "get_error_message",
@@ -383,20 +383,6 @@ def create_timeout_error(
383
383
  )
384
384
 
385
385
 
386
- def create_resource_not_found_error(
387
- resource_type: str,
388
- identifier: str,
389
- details: str | None = None,
390
- ) -> dict[str, Any]:
391
- """Create a resource not found error response."""
392
- return create_error_response(
393
- ErrorCode.RESOURCE_NOT_FOUND,
394
- f"{resource_type} '{identifier}' not found",
395
- details=details,
396
- context={"resource_type": resource_type, "identifier": identifier},
397
- )
398
-
399
-
400
386
  def is_error_response(response: dict[str, Any]) -> bool:
401
387
  """Check if a response is an error response."""
402
388
  return response.get("success") is False and "error" in response
@@ -12,7 +12,7 @@ from typing import Annotated, Any, cast, overload
12
12
  from fastmcp.exceptions import ToolError
13
13
  from pydantic import Field
14
14
 
15
- from ..errors import ErrorCode, create_error_response, create_resource_not_found_error
15
+ from ..errors import ErrorCode, create_error_response
16
16
  from ..utils.config_hash import compute_config_hash
17
17
  from ..utils.python_sandbox import (
18
18
  PythonSandboxError,
@@ -1533,13 +1533,15 @@ def register_config_dashboard_tools(mcp: Any, client: Any, **kwargs: Any) -> Non
1533
1533
  resolved, _ = await _resolve_dashboard(client, url_path)
1534
1534
  if resolved is None:
1535
1535
  raise_tool_error(
1536
- create_resource_not_found_error(
1537
- "Dashboard",
1538
- url_path,
1539
- details=(
1540
- f"No dashboard found with URL path or internal ID '{url_path}'. "
1541
- "Use ha_config_get_dashboard(list_only=True) to see available dashboards."
1542
- ),
1536
+ create_error_response(
1537
+ ErrorCode.RESOURCE_NOT_FOUND,
1538
+ f"Dashboard '{url_path}' not found",
1539
+ details=f"No dashboard found with URL path or internal ID '{url_path}'.",
1540
+ suggestions=[
1541
+ "Use ha_config_get_dashboard(list_only=True) to see available dashboards",
1542
+ "YAML-mode and default dashboards are not deletable via this tool",
1543
+ ],
1544
+ context={"action": "delete", "url_path": url_path},
1543
1545
  )
1544
1546
  )
1545
1547
  resolved_id = resolved["id"]
@@ -16,7 +16,7 @@ from fastmcp.exceptions import ToolError
16
16
  from fastmcp.tools import tool
17
17
  from pydantic import Field
18
18
 
19
- from ..errors import ErrorCode, create_error_response, create_resource_not_found_error
19
+ from ..errors import ErrorCode, create_error_response
20
20
  from .helpers import (
21
21
  exception_to_structured_error,
22
22
  log_tool_usage,
@@ -683,13 +683,14 @@ class ResourceTools:
683
683
  error_str = str(error_msg).lower()
684
684
  if "not found" in error_str or "unable to find" in error_str:
685
685
  raise_tool_error(
686
- create_resource_not_found_error(
687
- "Dashboard resource",
688
- resource_id,
686
+ create_error_response(
687
+ ErrorCode.RESOURCE_NOT_FOUND,
688
+ f"Dashboard resource '{resource_id}' not found",
689
689
  details=(
690
690
  f"Resource '{resource_id}' not found. "
691
691
  "Use ha_config_list_dashboard_resources() to see available resources."
692
692
  ),
693
+ context={"action": "delete", "resource_id": resource_id},
693
694
  )
694
695
  )
695
696
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 7.5.0.dev561
3
+ Version: 7.5.0.dev563
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