ha-mcp-dev 8.6.0.dev2865__tar.gz → 8.6.0.dev2868__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 (744) hide show
  1. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/PKG-INFO +4 -4
  2. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/README.md +3 -3
  3. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/pyproject.toml +1 -1
  4. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/pyproject.toml.orig +1 -1
  5. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/read_only.py +2 -2
  6. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/server.py +22 -48
  7. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/server_tool_text.py +80 -12
  8. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/en.json +1 -1
  9. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/05_feature_flags.js +1 -1
  10. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/backup.py +5 -5
  11. ha_mcp_dev-8.6.0.dev2868/src/ha_mcp/tools/bug_report_templates.py +958 -0
  12. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_bug_report.py +71 -886
  13. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/categorized_search.py +72 -3
  14. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/LICENSE +0 -0
  15. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/__init__.py +0 -0
  16. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/__main__.py +0 -0
  17. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_pypi_marker +0 -0
  18. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_rich_compat.py +0 -0
  19. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/__init__.py +0 -0
  20. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/LICENSE +0 -0
  21. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/MANIFEST.sha256 +0 -0
  22. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/REQUIRES.txt +0 -0
  23. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/VENDORED +0 -0
  24. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/__init__.py +0 -0
  25. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/_compat.py +0 -0
  26. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/_install_hints.py +0 -0
  27. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/_warnings.py +0 -0
  28. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/__init__.py +0 -0
  29. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/app.py +0 -0
  30. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/approval.py +0 -0
  31. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/choice.py +0 -0
  32. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/config.py +0 -0
  33. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/file_upload.py +0 -0
  34. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/form.py +0 -0
  35. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/apps/generative.py +0 -0
  36. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/__init__.py +0 -0
  37. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/__main__.py +0 -0
  38. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/apps_dev.py +0 -0
  39. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/auth.py +0 -0
  40. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/cimd.py +0 -0
  41. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/cli.py +0 -0
  42. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/client.py +0 -0
  43. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/__init__.py +0 -0
  44. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/authentication.py +0 -0
  45. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/command.py +0 -0
  46. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/configuration.py +0 -0
  47. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/credentials.py +0 -0
  48. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/horizon_client.py +0 -0
  49. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/output.py +0 -0
  50. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/deploy/state.py +0 -0
  51. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/discovery.py +0 -0
  52. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/generate.py +0 -0
  53. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/__init__.py +0 -0
  54. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_code.py +0 -0
  55. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/claude_desktop.py +0 -0
  56. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/cursor.py +0 -0
  57. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/gemini_cli.py +0 -0
  58. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/goose.py +0 -0
  59. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/mcp_json.py +0 -0
  60. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/shared.py +0 -0
  61. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/install/stdio.py +0 -0
  62. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/cli/run.py +0 -0
  63. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/__init__.py +0 -0
  64. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/_sdk_context_shim.py +0 -0
  65. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/auth/__init__.py +0 -0
  66. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/auth/bearer.py +0 -0
  67. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/auth/client_credentials.py +0 -0
  68. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/auth/oauth.py +0 -0
  69. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/caching.py +0 -0
  70. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/client.py +0 -0
  71. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/dependencies.py +0 -0
  72. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/elicitation.py +0 -0
  73. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/extension_hooks.py +0 -0
  74. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/group.py +0 -0
  75. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/logging.py +0 -0
  76. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/messages.py +0 -0
  77. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/mixins/__init__.py +0 -0
  78. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/mixins/prompts.py +0 -0
  79. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/mixins/resources.py +0 -0
  80. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/mixins/tools.py +0 -0
  81. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/oauth_callback.py +0 -0
  82. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/progress.py +0 -0
  83. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/roots.py +0 -0
  84. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/__init__.py +0 -0
  85. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/__init__.py +0 -0
  86. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/anthropic.py +0 -0
  87. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/google_genai.py +0 -0
  88. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/sampling/handlers/openai.py +0 -0
  89. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/telemetry.py +0 -0
  90. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/__init__.py +0 -0
  91. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/base.py +0 -0
  92. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/config.py +0 -0
  93. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/http.py +0 -0
  94. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/inference.py +0 -0
  95. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/memory.py +0 -0
  96. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/sse.py +0 -0
  97. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/client/transports/stdio.py +0 -0
  98. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/README.md +0 -0
  99. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
  100. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
  101. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
  102. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
  103. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/README.md +0 -0
  104. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/__init__.py +0 -0
  105. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/component_manager.py +0 -0
  106. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/component_manager/example.py +0 -0
  107. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/README.md +0 -0
  108. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
  109. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/example.py +0 -0
  110. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
  111. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/decorators.py +0 -0
  112. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/dependencies.py +0 -0
  113. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/exceptions.py +0 -0
  114. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/experimental/__init__.py +0 -0
  115. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/__init__.py +0 -0
  116. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/experimental/transforms/code_mode.py +0 -0
  117. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/mcp_config.py +0 -0
  118. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/prompts/__init__.py +0 -0
  119. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/prompts/base.py +0 -0
  120. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/prompts/function_prompt.py +0 -0
  121. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/py.typed +0 -0
  122. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/__init__.py +0 -0
  123. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/base.py +0 -0
  124. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/function_resource.py +0 -0
  125. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/security.py +0 -0
  126. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/template.py +0 -0
  127. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/resources/types.py +0 -0
  128. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/__init__.py +0 -0
  129. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/__init__.py +0 -0
  130. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/auth.py +0 -0
  131. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/cimd.py +0 -0
  132. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/__init__.py +0 -0
  133. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/handlers/authorize.py +0 -0
  134. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/identity_assertion.py +0 -0
  135. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/jwt_issuer.py +0 -0
  136. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/middleware.py +0 -0
  137. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/__init__.py +0 -0
  138. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/consent.py +0 -0
  139. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/models.py +0 -0
  140. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/proxy.py +0 -0
  141. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/ui.py +0 -0
  142. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oauth_proxy/upstream.py +0 -0
  143. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/oidc_proxy.py +0 -0
  144. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/__init__.py +0 -0
  145. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/auth0.py +0 -0
  146. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/aws.py +0 -0
  147. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/azure.py +0 -0
  148. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/clerk.py +0 -0
  149. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/debug.py +0 -0
  150. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/descope.py +0 -0
  151. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/discord.py +0 -0
  152. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/github.py +0 -0
  153. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/google.py +0 -0
  154. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/huggingface.py +0 -0
  155. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/in_memory.py +0 -0
  156. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/introspection.py +0 -0
  157. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/jwt.py +0 -0
  158. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/keycloak.py +0 -0
  159. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/oci.py +0 -0
  160. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/propelauth.py +0 -0
  161. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/scalekit.py +0 -0
  162. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/supabase.py +0 -0
  163. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/providers/workos.py +0 -0
  164. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/redirect_validation.py +0 -0
  165. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/auth/ssrf.py +0 -0
  166. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/caching.py +0 -0
  167. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/completions.py +0 -0
  168. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/context.py +0 -0
  169. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/dependencies.py +0 -0
  170. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/elicitation.py +0 -0
  171. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/event_store.py +0 -0
  172. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/extensions.py +0 -0
  173. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/http.py +0 -0
  174. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/lifespan.py +0 -0
  175. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/low_level.py +0 -0
  176. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/__init__.py +0 -0
  177. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/authorization.py +0 -0
  178. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/caching.py +0 -0
  179. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/dereference.py +0 -0
  180. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/error_handling.py +0 -0
  181. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/logging.py +0 -0
  182. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/middleware.py +0 -0
  183. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/ping.py +0 -0
  184. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/rate_limiting.py +0 -0
  185. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/response_limiting.py +0 -0
  186. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/timing.py +0 -0
  187. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/middleware/tool_injection.py +0 -0
  188. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/mixins/__init__.py +0 -0
  189. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/mixins/lifespan.py +0 -0
  190. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/mixins/mcp_operations.py +0 -0
  191. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/mixins/transport.py +0 -0
  192. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/__init__.py +0 -0
  193. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/addressing.py +0 -0
  194. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/aggregate.py +0 -0
  195. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/base.py +0 -0
  196. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/fastmcp_provider.py +0 -0
  197. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem.py +0 -0
  198. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/filesystem_discovery.py +0 -0
  199. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/__init__.py +0 -0
  200. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/__init__.py +0 -0
  201. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/prompts.py +0 -0
  202. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/resources.py +0 -0
  203. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/decorators/tools.py +0 -0
  204. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/local_provider/local_provider.py +0 -0
  205. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/README.md +0 -0
  206. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/__init__.py +0 -0
  207. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/components.py +0 -0
  208. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/provider.py +0 -0
  209. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/openapi/routing.py +0 -0
  210. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_payload.py +0 -0
  211. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/prefab_synthesis.py +0 -0
  212. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/proxy.py +0 -0
  213. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/__init__.py +0 -0
  214. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/_common.py +0 -0
  215. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/claude_provider.py +0 -0
  216. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/directory_provider.py +0 -0
  217. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/skill_provider.py +0 -0
  218. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/skills/vendor_providers.py +0 -0
  219. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/providers/wrapped_provider.py +0 -0
  220. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/server.py +0 -0
  221. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/session_scoped_event_store.py +0 -0
  222. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/sessions.py +0 -0
  223. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/telemetry.py +0 -0
  224. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/__init__.py +0 -0
  225. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/catalog.py +0 -0
  226. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/namespace.py +0 -0
  227. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/prompts_as_tools.py +0 -0
  228. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/resources_as_tools.py +0 -0
  229. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/__init__.py +0 -0
  230. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/base.py +0 -0
  231. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/bm25.py +0 -0
  232. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/search/regex.py +0 -0
  233. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/tool_transform.py +0 -0
  234. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/version_filter.py +0 -0
  235. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/server/transforms/visibility.py +0 -0
  236. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/settings.py +0 -0
  237. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/telemetry.py +0 -0
  238. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/__init__.py +0 -0
  239. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/base.py +0 -0
  240. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/function_parsing.py +0 -0
  241. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/function_tool.py +0 -0
  242. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/tools/tool_transform.py +0 -0
  243. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/types.py +0 -0
  244. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/__init__.py +0 -0
  245. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/asgi_transport.py +0 -0
  246. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/async_utils.py +0 -0
  247. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/auth.py +0 -0
  248. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/authorization.py +0 -0
  249. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/cli.py +0 -0
  250. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/components.py +0 -0
  251. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/docstring_parsing.py +0 -0
  252. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/exceptions.py +0 -0
  253. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/http.py +0 -0
  254. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/inspect.py +0 -0
  255. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema.py +0 -0
  256. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/json_schema_type.py +0 -0
  257. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/lifespan.py +0 -0
  258. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/logging.py +0 -0
  259. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
  260. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
  261. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
  262. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
  263. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -0
  264. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -0
  265. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -0
  266. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
  267. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
  268. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
  269. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/mime.py +0 -0
  270. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/README.md +0 -0
  271. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/__init__.py +0 -0
  272. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/director.py +0 -0
  273. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/formatters.py +0 -0
  274. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/json_schema_converter.py +0 -0
  275. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/models.py +0 -0
  276. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/parser.py +0 -0
  277. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/openapi/schemas.py +0 -0
  278. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/pagination.py +0 -0
  279. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/prefab.py +0 -0
  280. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/skills.py +0 -0
  281. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/tasks.py +0 -0
  282. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/tests.py +0 -0
  283. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/timeout.py +0 -0
  284. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/token_cache.py +0 -0
  285. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/types.py +0 -0
  286. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/ui.py +0 -0
  287. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/version_check.py +0 -0
  288. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/fastmcp/utilities/versions.py +0 -0
  289. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/LICENSE +0 -0
  290. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/MANIFEST.sha256 +0 -0
  291. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/REQUIRES.txt +0 -0
  292. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/VENDORED +0 -0
  293. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/__init__.py +0 -0
  294. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/cli/__init__.py +0 -0
  295. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/cli/claude.py +0 -0
  296. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/cli/cli.py +0 -0
  297. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/__init__.py +0 -0
  298. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/__main__.py +0 -0
  299. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/_input_required.py +0 -0
  300. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/_memory.py +0 -0
  301. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/_probe.py +0 -0
  302. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/_transport.py +0 -0
  303. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/__init__.py +0 -0
  304. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/exceptions.py +0 -0
  305. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/extensions/__init__.py +0 -0
  306. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/extensions/client_credentials.py +0 -0
  307. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/extensions/identity_assertion.py +0 -0
  308. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/oauth2.py +0 -0
  309. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/auth/utils.py +0 -0
  310. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/caching.py +0 -0
  311. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/client.py +0 -0
  312. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/context.py +0 -0
  313. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/extension.py +0 -0
  314. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/session.py +0 -0
  315. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/session_group.py +0 -0
  316. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/sse.py +0 -0
  317. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/stdio.py +0 -0
  318. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/streamable_http.py +0 -0
  319. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/client/subscriptions.py +0 -0
  320. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/__init__.py +0 -0
  321. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/posix/__init__.py +0 -0
  322. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/posix/utilities.py +0 -0
  323. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/win32/__init__.py +0 -0
  324. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/os/win32/utilities.py +0 -0
  325. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/py.typed +0 -0
  326. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/__init__.py +0 -0
  327. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/__main__.py +0 -0
  328. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/_otel.py +0 -0
  329. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/_streamable_http_modern.py +0 -0
  330. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/apps.py +0 -0
  331. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/__init__.py +0 -0
  332. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/errors.py +0 -0
  333. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/__init__.py +0 -0
  334. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/authorize.py +0 -0
  335. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/metadata.py +0 -0
  336. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/register.py +0 -0
  337. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/revoke.py +0 -0
  338. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/handlers/token.py +0 -0
  339. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/json_response.py +0 -0
  340. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/middleware/__init__.py +0 -0
  341. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/middleware/auth_context.py +0 -0
  342. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/middleware/bearer_auth.py +0 -0
  343. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/middleware/client_auth.py +0 -0
  344. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/provider.py +0 -0
  345. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/routes.py +0 -0
  346. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/auth/settings.py +0 -0
  347. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/caching.py +0 -0
  348. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/connection.py +0 -0
  349. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/context.py +0 -0
  350. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/elicitation.py +0 -0
  351. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/extension.py +0 -0
  352. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/fastmcp.py +0 -0
  353. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/lowlevel/__init__.py +0 -0
  354. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/lowlevel/helper_types.py +0 -0
  355. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/lowlevel/server.py +0 -0
  356. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/__init__.py +0 -0
  357. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/context.py +0 -0
  358. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/exceptions.py +0 -0
  359. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/__init__.py +0 -0
  360. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/base.py +0 -0
  361. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/prompts/manager.py +0 -0
  362. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resolve.py +0 -0
  363. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/__init__.py +0 -0
  364. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/base.py +0 -0
  365. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/resource_manager.py +0 -0
  366. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/templates.py +0 -0
  367. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/resources/types.py +0 -0
  368. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/server.py +0 -0
  369. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/__init__.py +0 -0
  370. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/base.py +0 -0
  371. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/tools/tool_manager.py +0 -0
  372. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/__init__.py +0 -0
  373. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/context_injection.py +0 -0
  374. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/func_metadata.py +0 -0
  375. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/logging.py +0 -0
  376. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/mcpserver/utilities/types.py +0 -0
  377. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/models.py +0 -0
  378. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/request_state.py +0 -0
  379. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/runner.py +0 -0
  380. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/session.py +0 -0
  381. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/sse.py +0 -0
  382. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/stdio.py +0 -0
  383. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/streamable_http.py +0 -0
  384. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/streamable_http_manager.py +0 -0
  385. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/subscriptions.py +0 -0
  386. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/transport_security.py +0 -0
  387. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/server/validation.py +0 -0
  388. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/__init__.py +0 -0
  389. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_callable_inspection.py +0 -0
  390. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_compat.py +0 -0
  391. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_context_streams.py +0 -0
  392. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_httpx_utils.py +0 -0
  393. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_otel.py +0 -0
  394. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/_stream_protocols.py +0 -0
  395. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/auth.py +0 -0
  396. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/auth_utils.py +0 -0
  397. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/context.py +0 -0
  398. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/direct_dispatcher.py +0 -0
  399. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/dispatcher.py +0 -0
  400. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/exceptions.py +0 -0
  401. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/extension.py +0 -0
  402. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/inbound.py +0 -0
  403. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/jsonrpc_dispatcher.py +0 -0
  404. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/memory.py +0 -0
  405. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/message.py +0 -0
  406. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/metadata_utils.py +0 -0
  407. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/path_security.py +0 -0
  408. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/peer.py +0 -0
  409. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/subscriptions.py +0 -0
  410. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/tool_name_validation.py +0 -0
  411. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/transport_context.py +0 -0
  412. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/shared/uri_template.py +0 -0
  413. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/types/__init__.py +0 -0
  414. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/types/jsonrpc.py +0 -0
  415. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/types/methods.py +0 -0
  416. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp/types/version.py +0 -0
  417. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/LICENSE +0 -0
  418. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/MANIFEST.sha256 +0 -0
  419. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/REQUIRES.txt +0 -0
  420. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/VENDORED +0 -0
  421. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/__init__.py +0 -0
  422. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/_types.py +0 -0
  423. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/_v2025_11_25/__init__.py +0 -0
  424. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/_v2026_07_28/__init__.py +0 -0
  425. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/_wire_base.py +0 -0
  426. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/jsonrpc.py +0 -0
  427. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/methods.py +0 -0
  428. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/py.typed +0 -0
  429. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/mcp_types/version.py +0 -0
  430. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/requirements.txt +0 -0
  431. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/LICENSE +0 -0
  432. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/MANIFEST.sha256 +0 -0
  433. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/VENDORED +0 -0
  434. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/__init__.py +0 -0
  435. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/__main__.py +0 -0
  436. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/__init__.py +0 -0
  437. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/client.py +0 -0
  438. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/connection.py +0 -0
  439. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/messages.py +0 -0
  440. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/router.py +0 -0
  441. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/asyncio/server.py +0 -0
  442. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/auth.py +0 -0
  443. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/cli.py +0 -0
  444. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/client.py +0 -0
  445. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/connection.py +0 -0
  446. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/datastructures.py +0 -0
  447. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/exceptions.py +0 -0
  448. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/extensions/__init__.py +0 -0
  449. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/extensions/base.py +0 -0
  450. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/extensions/permessage_deflate.py +0 -0
  451. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/frames.py +0 -0
  452. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/headers.py +0 -0
  453. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/http11.py +0 -0
  454. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/imports.py +0 -0
  455. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/__init__.py +0 -0
  456. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/auth.py +0 -0
  457. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/client.py +0 -0
  458. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/exceptions.py +0 -0
  459. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/framing.py +0 -0
  460. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/handshake.py +0 -0
  461. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/http.py +0 -0
  462. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/protocol.py +0 -0
  463. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/legacy/server.py +0 -0
  464. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/protocol.py +0 -0
  465. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/proxy.py +0 -0
  466. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/py.typed +0 -0
  467. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/server.py +0 -0
  468. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/streams.py +0 -0
  469. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/__init__.py +0 -0
  470. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/client.py +0 -0
  471. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/connection.py +0 -0
  472. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/messages.py +0 -0
  473. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/router.py +0 -0
  474. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/server.py +0 -0
  475. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/sync/utils.py +0 -0
  476. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/__init__.py +0 -0
  477. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/client.py +0 -0
  478. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/connection.py +0 -0
  479. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/messages.py +0 -0
  480. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/router.py +0 -0
  481. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/server.py +0 -0
  482. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/trio/utils.py +0 -0
  483. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/typing.py +0 -0
  484. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/uri.py +0 -0
  485. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/utils.py +0 -0
  486. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_vendor/websockets/version.py +0 -0
  487. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/_version.py +0 -0
  488. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/auth/__init__.py +0 -0
  489. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/auth/consent_form.py +0 -0
  490. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/auth/oidc_compat.py +0 -0
  491. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/auth/provider.py +0 -0
  492. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/backup_manager.py +0 -0
  493. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/browser_landing.py +0 -0
  494. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/__init__.py +0 -0
  495. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/admin_routes.py +0 -0
  496. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/rest_client.py +0 -0
  497. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/supervisor_client.py +0 -0
  498. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/websocket_client.py +0 -0
  499. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/client/websocket_listener.py +0 -0
  500. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config.py +0 -0
  501. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config_backup.py +0 -0
  502. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config_overrides.py +0 -0
  503. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config_registry.py +0 -0
  504. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/config_settings.py +0 -0
  505. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/__init__.py +0 -0
  506. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/capture.py +0 -0
  507. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/content.py +0 -0
  508. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/paths.py +0 -0
  509. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/provision.py +0 -0
  510. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/dashboard_screenshot/theme_guard.py +0 -0
  511. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/errors.py +0 -0
  512. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/ha_request_queue.py +0 -0
  513. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/hacs_auto_refresh.py +0 -0
  514. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/http_transport.py +0 -0
  515. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/llm_exposure.py +0 -0
  516. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/log_filters.py +0 -0
  517. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/__init__.py +0 -0
  518. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/approval_queue.py +0 -0
  519. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/decision_pin.py +0 -0
  520. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/decisions.py +0 -0
  521. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/editing.py +0 -0
  522. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/evaluator.py +0 -0
  523. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/events.py +0 -0
  524. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/handlers.py +0 -0
  525. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/middleware.py +0 -0
  526. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/model.py +0 -0
  527. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/mrtr.py +0 -0
  528. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/persistence.py +0 -0
  529. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/server_channels.py +0 -0
  530. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/policy/value_sources.py +0 -0
  531. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/py.typed +0 -0
  532. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/redaction.py +0 -0
  533. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/renamed_tools.py +0 -0
  534. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/LICENSE +0 -0
  535. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/SKILL.md +0 -0
  536. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/appdaemon.md +0 -0
  537. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/automation-actions.md +0 -0
  538. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/backups.md +0 -0
  539. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/blueprint-guide.md +0 -0
  540. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-cards.md +0 -0
  541. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/dashboard-guide.md +0 -0
  542. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/device-control.md +0 -0
  543. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/domain-docs.md +0 -0
  544. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/examples.yaml +0 -0
  545. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/helper-selection.md +0 -0
  546. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/safe-refactoring.md +0 -0
  547. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/scenes.md +0 -0
  548. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/template-guidelines.md +0 -0
  549. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/triggers-and-conditions.md +0 -0
  550. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/resources/skills-vendor/skills/home-assistant-best-practices/references/yaml-only-integrations.md +0 -0
  551. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/server_lifespan.py +0 -0
  552. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/__init__.py +0 -0
  553. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_advanced.py +0 -0
  554. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_backups.py +0 -0
  555. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_fs.py +0 -0
  556. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_server.py +0 -0
  557. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_theme.py +0 -0
  558. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_handlers_tools.py +0 -0
  559. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_i18n.py +0 -0
  560. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_locale_policy.py +0 -0
  561. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_persistence.py +0 -0
  562. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_supervisor.py +0 -0
  563. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_theme.py +0 -0
  564. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/_tools_meta.py +0 -0
  565. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/README.md +0 -0
  566. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/az.json +0 -0
  567. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/cs.json +0 -0
  568. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/de.json +0 -0
  569. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/eo.json +0 -0
  570. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/es.json +0 -0
  571. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/fr.json +0 -0
  572. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/it.json +0 -0
  573. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/ko.json +0 -0
  574. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/nl.json +0 -0
  575. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/pl.json +0 -0
  576. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/ru.json +0 -0
  577. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/sv.json +0 -0
  578. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/tlh.json +0 -0
  579. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/zh-Hans.json +0 -0
  580. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/locales/zh-Hant.json +0 -0
  581. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings.css +0 -0
  582. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings.html +0 -0
  583. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/01_i18n_state.js +0 -0
  584. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/02_tools_restart.js +0 -0
  585. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/03_render_save.js +0 -0
  586. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/04_backups.js +0 -0
  587. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/06_policy_cards.js +0 -0
  588. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/07_policy_actions.js +0 -0
  589. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/08_advanced.js +0 -0
  590. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/settings_ui/settings_js/09_prefs_visibility.js +0 -0
  591. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/smoke_test.py +0 -0
  592. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/stdio_settings_sidecar.py +0 -0
  593. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/strict_bps.py +0 -0
  594. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tool_dispatch.py +0 -0
  595. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/__init__.py +0 -0
  596. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/auto_backup.py +0 -0
  597. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/best_practice_checker.py +0 -0
  598. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/best_practice_result.py +0 -0
  599. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/best_practice_variables.py +0 -0
  600. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/blueprint_sources.py +0 -0
  601. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/blueprint_substitute.py +0 -0
  602. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/blueprint_write.py +0 -0
  603. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/bulk_selector.py +0 -0
  604. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/coercion.py +0 -0
  605. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_api.py +0 -0
  606. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_config_entries.py +0 -0
  607. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_config_reads.py +0 -0
  608. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_dashboard_edit.py +0 -0
  609. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_devices.py +0 -0
  610. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_registries.py +0 -0
  611. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/component_registry_lookup.py +0 -0
  612. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_flow.py +0 -0
  613. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_flow_form.py +0 -0
  614. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_flow_menu.py +0 -0
  615. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_flow_walker.py +0 -0
  616. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_identity.py +0 -0
  617. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_reconfigure.py +0 -0
  618. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_entry_reload_watch.py +0 -0
  619. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/__init__.py +0 -0
  620. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/create.py +0 -0
  621. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/flow.py +0 -0
  622. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/listing.py +0 -0
  623. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/registry.py +0 -0
  624. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/schemas.py +0 -0
  625. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/update.py +0 -0
  626. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_helpers/validation.py +0 -0
  627. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/config_write_helpers.py +0 -0
  628. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/dashboard_edit_errors.py +0 -0
  629. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/dashboard_list_checks.py +0 -0
  630. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/device_control.py +0 -0
  631. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/device_enrichment.py +0 -0
  632. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/diagnostics_helpers.py +0 -0
  633. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/entity_registration.py +0 -0
  634. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/entity_update_fields.py +0 -0
  635. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/error_log_parsing.py +0 -0
  636. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/hacs_registration.py +0 -0
  637. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/helpers.py +0 -0
  638. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/integration_reconfigure.py +0 -0
  639. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/log_common.py +0 -0
  640. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/log_sources.py +0 -0
  641. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/log_sources_fault.py +0 -0
  642. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/log_sources_supervisor.py +0 -0
  643. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/__init__.py +0 -0
  644. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/base.py +0 -0
  645. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/matter.py +0 -0
  646. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/thread.py +0 -0
  647. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/zigbee.py +0 -0
  648. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/radio/zwave.py +0 -0
  649. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/reference_validator.py +0 -0
  650. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/registry.py +0 -0
  651. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/renamed_tool_middleware.py +0 -0
  652. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/response_helpers.py +0 -0
  653. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/scene_discovery.py +0 -0
  654. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/__init__.py +0 -0
  655. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/base.py +0 -0
  656. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/component.py +0 -0
  657. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/entities.py +0 -0
  658. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/legacy.py +0 -0
  659. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/modes.py +0 -0
  660. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/overview.py +0 -0
  661. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/response.py +0 -0
  662. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/search/state.py +0 -0
  663. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/__init__.py +0 -0
  664. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_base.py +0 -0
  665. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_config.py +0 -0
  666. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_deep.py +0 -0
  667. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_entities.py +0 -0
  668. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_fetch.py +0 -0
  669. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_graph.py +0 -0
  670. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_overview.py +0 -0
  671. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_scenes.py +0 -0
  672. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/smart_search/_scoring.py +0 -0
  673. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tool_search_hint_middleware.py +0 -0
  674. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_addons.py +0 -0
  675. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_areas.py +0 -0
  676. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_assist_pipeline.py +0 -0
  677. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_blueprints.py +0 -0
  678. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_calendar.py +0 -0
  679. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_camera.py +0 -0
  680. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_categories.py +0 -0
  681. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_code.py +0 -0
  682. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_automations.py +0 -0
  683. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_dashboards.py +0 -0
  684. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_helpers.py +0 -0
  685. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_scenes.py +0 -0
  686. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_config_scripts.py +0 -0
  687. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_dashboard_screenshot.py +0 -0
  688. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_dev.py +0 -0
  689. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_energy.py +0 -0
  690. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_entities.py +0 -0
  691. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_filesystem.py +0 -0
  692. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_groups.py +0 -0
  693. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_hacs.py +0 -0
  694. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_history.py +0 -0
  695. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_integrations.py +0 -0
  696. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_labels.py +0 -0
  697. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_logs.py +0 -0
  698. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_radio.py +0 -0
  699. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_registry.py +0 -0
  700. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_resources.py +0 -0
  701. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_search.py +0 -0
  702. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_security_policy.py +0 -0
  703. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_service.py +0 -0
  704. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_services.py +0 -0
  705. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_system.py +0 -0
  706. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_themes.py +0 -0
  707. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_todo.py +0 -0
  708. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_traces.py +0 -0
  709. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_updates.py +0 -0
  710. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_utility.py +0 -0
  711. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_voice_assistant.py +0 -0
  712. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_yaml_config.py +0 -0
  713. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_yaml_read.py +0 -0
  714. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/tools_zones.py +0 -0
  715. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/util_helpers.py +0 -0
  716. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/validation_middleware.py +0 -0
  717. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/tools/ws_waiters.py +0 -0
  718. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/__init__.py +0 -0
  719. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/component_search.py +0 -0
  720. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/lite_docstrings.py +0 -0
  721. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transforms/write_tool_note.py +0 -0
  722. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/transport_security.py +0 -0
  723. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/update_check.py +0 -0
  724. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/__init__.py +0 -0
  725. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/config_hash.py +0 -0
  726. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/config_write_lock.py +0 -0
  727. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/dashboard_patch.py +0 -0
  728. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/data_paths.py +0 -0
  729. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/device_registry_semantics.py +0 -0
  730. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/domain_handlers.py +0 -0
  731. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/entity_membership.py +0 -0
  732. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/fuzzy_search.py +0 -0
  733. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/kill_signal_diagnostics.py +0 -0
  734. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/mcp_client_host.py +0 -0
  735. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/operation_manager.py +0 -0
  736. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/python_sandbox.py +0 -0
  737. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/registry_update_lock.py +0 -0
  738. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/skill_loader.py +0 -0
  739. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/utils/usage_logger.py +0 -0
  740. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/__init__.py +0 -0
  741. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/enforcement.py +0 -0
  742. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/model.py +0 -0
  743. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/persistence.py +0 -0
  744. {ha_mcp_dev-8.6.0.dev2865 → ha_mcp_dev-8.6.0.dev2868}/src/ha_mcp/visibility/resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ha-mcp-dev
3
- Version: 8.6.0.dev2865
3
+ Version: 8.6.0.dev2868
4
4
  Summary: Home Assistant MCP Server - Complete control of Home Assistant through MCP
5
5
  Keywords: mcp,home-assistant,ai,automation,smart-home
6
6
  Author: Julien
@@ -407,7 +407,7 @@ Set ENABLE_TOOL_SEARCH=true (or toggle the option in the HA app). The full catal
407
407
 
408
408
  | Tool | Purpose |
409
409
  |------|---------|
410
- | `ha_search_tools` | BM25 keyword search across all tools. Returns name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one. |
410
+ | `ha_search_tools` | BM25 English-keyword search across all tools, pinned ones included. Hidden tools return name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one; a pinned tool returns a name-only stub (`pinned: true`) pointing back at the tool list, and does not use up a result slot. |
411
411
  | `ha_call_read_tool` | Execute a `readOnlyHint` tool by name. Safe — clients can auto-approve. |
412
412
  | `ha_call_write_tool` | Execute a write tool that creates or updates data. |
413
413
  | `ha_call_delete_tool` | Execute a tool that removes / deletes data. |
@@ -419,7 +419,7 @@ A `ha_manage_*` tool combines several operations, so it is reachable from more t
419
419
  | Setting | Default | Description |
420
420
  |---------|---------|-------------|
421
421
  | `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
422
- | `TOOL_SEARCH_MAX_RESULTS` | `5` | Max results returned by `ha_search_tools` (range 2–10). |
422
+ | `TOOL_SEARCH_MAX_RESULTS` | `5` | Max hidden tools returned per `ha_search_tools` call (range 2–10); a pinned tool that ranks inside that top count is added as a name-only stub on top of it. |
423
423
  | `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
424
424
 
425
425
  ### When to enable
@@ -566,7 +566,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
566
566
  ## 💬 Community
567
567
 
568
568
  - **[GitHub Discussions](https://github.com/homeassistant-ai/ha-mcp/discussions)** — Ask questions, share ideas
569
- - **[Issue Tracker](https://github.com/homeassistant-ai/ha-mcp/issues)** — Report bugs, request features, or suggest tool behavior improvements
569
+ - **[Issue Tracker](https://github.com/homeassistant-ai/ha-mcp/issues)** — Report bugs, request features, or suggest tool behavior improvements. Bug reports need the report the `ha_report_issue` tool generates, or a reason why there is none; without either they are closed after 24 hours.
570
570
 
571
571
  ---
572
572
 
@@ -347,7 +347,7 @@ Set ENABLE_TOOL_SEARCH=true (or toggle the option in the HA app). The full catal
347
347
 
348
348
  | Tool | Purpose |
349
349
  |------|---------|
350
- | `ha_search_tools` | BM25 keyword search across all tools. Returns name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one. |
350
+ | `ha_search_tools` | BM25 English-keyword search across all tools, pinned ones included. Hidden tools return name, description, parameters, and annotations (`readOnlyHint` / `destructiveHint`) so the agent can pick the right one; a pinned tool returns a name-only stub (`pinned: true`) pointing back at the tool list, and does not use up a result slot. |
351
351
  | `ha_call_read_tool` | Execute a `readOnlyHint` tool by name. Safe — clients can auto-approve. |
352
352
  | `ha_call_write_tool` | Execute a write tool that creates or updates data. |
353
353
  | `ha_call_delete_tool` | Execute a tool that removes / deletes data. |
@@ -359,7 +359,7 @@ A `ha_manage_*` tool combines several operations, so it is reachable from more t
359
359
  | Setting | Default | Description |
360
360
  |---------|---------|-------------|
361
361
  | `ENABLE_TOOL_SEARCH` | `false` | Replace full tool catalog with search-based discovery (tools deferred behind on-demand search). |
362
- | `TOOL_SEARCH_MAX_RESULTS` | `5` | Max results returned by `ha_search_tools` (range 2–10). |
362
+ | `TOOL_SEARCH_MAX_RESULTS` | `5` | Max hidden tools returned per `ha_search_tools` call (range 2–10); a pinned tool that ranks inside that top count is added as a name-only stub on top of it. |
363
363
  | `PINNED_TOOLS` | empty | Comma-separated tool names to keep always visible. The web settings UI is the primary way to manage this. |
364
364
 
365
365
  ### When to enable
@@ -506,7 +506,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
506
506
  ## 💬 Community
507
507
 
508
508
  - **[GitHub Discussions](https://github.com/homeassistant-ai/ha-mcp/discussions)** — Ask questions, share ideas
509
- - **[Issue Tracker](https://github.com/homeassistant-ai/ha-mcp/issues)** — Report bugs, request features, or suggest tool behavior improvements
509
+ - **[Issue Tracker](https://github.com/homeassistant-ai/ha-mcp/issues)** — Report bugs, request features, or suggest tool behavior improvements. Bug reports need the report the `ha_report_issue` tool generates, or a reason why there is none; without either they are closed after 24 hours.
510
510
 
511
511
  ---
512
512
 
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2865"
7
+ version = "8.6.0.dev2868"
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.15"
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ha-mcp-dev"
7
- version = "8.6.0.dev2865"
7
+ version = "8.6.0.dev2868"
8
8
  description = "Home Assistant MCP Server - Complete control of Home Assistant through MCP"
9
9
  readme = "README.md"
10
10
  # Upper bound widened to <3.15 so the package installs on Home Assistant's
@@ -89,7 +89,7 @@ def read_only_remedy_hint() -> str:
89
89
  if get_global_settings().read_only_mode:
90
90
  return (
91
91
  "To allow changes, the user must turn off Read Only Mode in the "
92
- "ha-mcp settings UI (Tools tab) or the add-on configuration."
92
+ "ha-mcp settings UI (Tools tab) or the app (add-on) configuration."
93
93
  )
94
94
  return "This connection is read-only. If changes are needed, ask the user."
95
95
 
@@ -135,7 +135,7 @@ def _addon_write(args: dict[str, Any]) -> str | None:
135
135
  return f"action={action!r}"
136
136
  for param in _ADDON_CONFIG_WRITE_PARAMS:
137
137
  if args.get(param) is not None:
138
- return f"add-on configuration change ({param}=...)"
138
+ return f"app (add-on) configuration change ({param}=...)"
139
139
  if args.get("array_patch") is not None:
140
140
  return "array_patch modification"
141
141
  if args.get("websocket"):
@@ -23,11 +23,14 @@ from .errors import ErrorCode, create_error_response
23
23
  from .http_transport import HttpTransportFastMCP as FastMCP
24
24
  from .server_lifespan import server_lifespan
25
25
  from .server_tool_text import (
26
+ ISSUE_FILING_INSTRUCTIONS,
26
27
  LITE_DOCSTRING_DESTINATIONS,
27
28
  LITE_DOCSTRINGS,
29
+ READ_ONLY_INSTRUCTIONS,
28
30
  SEARCH_KEYWORDS,
29
31
  SEARCH_TOOL_DESCRIPTION,
30
32
  SKILL_USE_BEFORE_KEYWORDS,
33
+ TOOL_DISCOVERY_INSTRUCTIONS,
31
34
  )
32
35
  from .tools.helpers import raise_tool_error
33
36
  from .transforms import DEFAULT_PINNED_TOOLS
@@ -128,28 +131,7 @@ class HomeAssistantSmartMCPServer:
128
131
  server_name = self.settings.mcp_server_name
129
132
  server_version = self.settings.mcp_server_version
130
133
 
131
- # Build server instructions from bundled skills (if enabled)
132
- instructions = self._build_skills_instructions()
133
-
134
- # Surface Read Only Mode in the startup instructions so clients
135
- # that show server instructions warn the model up front. Startup
136
- # state only — live flips are covered by the structured
137
- # READ_ONLY_MODE call errors and the ha_get_overview field.
138
- if self.settings.read_only_mode:
139
- read_only_note = (
140
- "## Read Only Mode\n"
141
- "This server is running in Read Only Mode: write-capable "
142
- "tools are disabled and every write or destructive "
143
- "operation is blocked with a READ_ONLY_MODE error. You can "
144
- "search, read, and analyze freely. To allow changes, the "
145
- "user must turn off Read Only Mode in the ha-mcp settings "
146
- "UI (Tools tab) or the add-on configuration."
147
- )
148
- instructions = (
149
- f"{instructions}\n\n{read_only_note}"
150
- if instructions
151
- else read_only_note
152
- )
134
+ instructions = self._build_instructions()
153
135
 
154
136
  # Create FastMCP server with Home Assistant icons for client UI display
155
137
  self.mcp = FastMCP(
@@ -380,6 +362,22 @@ class HomeAssistantSmartMCPServer:
380
362
  logger.debug("skill-tool visibility lookup failed", exc_info=True)
381
363
  return False
382
364
 
365
+ def _build_instructions(self) -> str:
366
+ """Compose the server instructions sent in the MCP initialize response."""
367
+ sections: list[str] = []
368
+ skills = self._build_skills_instructions()
369
+ if skills:
370
+ sections.append(skills)
371
+
372
+ # Surface Read Only Mode in the startup instructions so clients
373
+ # that show server instructions warn the model up front. Startup
374
+ # state only — live flips are covered by the structured
375
+ # READ_ONLY_MODE call errors and the ha_get_overview field.
376
+ if self.settings.read_only_mode:
377
+ sections.append(READ_ONLY_INSTRUCTIONS)
378
+ sections.append(ISSUE_FILING_INSTRUCTIONS)
379
+ return "\n\n".join(sections)
380
+
383
381
  def _build_skills_instructions(self) -> str | None:
384
382
  """Build server instructions from bundled skill frontmatter.
385
383
 
@@ -456,32 +454,8 @@ class HomeAssistantSmartMCPServer:
456
454
 
457
455
  # Append tool search instructions when enabled
458
456
  if self.settings.enable_tool_search:
459
- instructions += (
460
- "\n\n## Tool Discovery\n"
461
- "This server uses search-based tool discovery. Most tools "
462
- "are NOT listed directly \u2014 use ha_search_tools to find them.\n\n"
463
- "WORKFLOW:\n"
464
- '1. Call ha_search_tools(query="...") to find relevant tools\n'
465
- "2. Results include name, description, parameters, and "
466
- "annotations (readOnlyHint/destructiveHint)\n"
467
- "3. Execute the discovered tool \u2014 two options:\n"
468
- " a) DIRECT CALL (preferred): Call the tool directly by "
469
- "name. All discovered tools are callable without a proxy.\n"
470
- " b) VIA PROXY: For permission-gated execution, use the "
471
- "matching proxy:\n"
472
- " - ha_call_read_tool \u2014 safe, read-only operations\n"
473
- " - ha_call_write_tool \u2014 creates or modifies data\n"
474
- " - ha_call_delete_tool \u2014 removes data permanently\n\n"
475
- "Once you know a tool\u2019s name, you do NOT need to search "
476
- "again \u2014 call it directly.\n\n"
477
- f"A few default tools are listed directly "
478
- f"({', '.join(DEFAULT_PINNED_TOOLS)}) — these are the "
479
- f"starting pins, and users can unpin the non-mandatory "
480
- f"ones via the Tools tab in the settings UI, so the "
481
- f"actual visible set may be a subset of this list. "
482
- f"Everything else must be discovered via search.\n\n"
483
- "DO NOT assume a capability is unavailable because you "
484
- "don't see a direct tool for it. ALWAYS search first."
457
+ instructions += TOOL_DISCOVERY_INSTRUCTIONS.format(
458
+ pinned=", ".join(DEFAULT_PINNED_TOOLS)
485
459
  )
486
460
 
487
461
  return instructions
@@ -9,12 +9,15 @@ from __future__ import annotations
9
9
 
10
10
  # Description for the unified search tool
11
11
  SEARCH_TOOL_DESCRIPTION = (
12
- "Search ALL Home Assistant tools by keyword. Returns matching tools "
13
- "with descriptions, parameters, and annotations (read/write/delete). "
14
- "Categories: entities, states, automations, scripts, dashboards, "
15
- "helpers, HACS, calendar, zones, labels, groups, areas, floors, "
16
- "history, statistics, devices, integrations, services, backups, "
17
- "todo, camera, blueprints, system, and more.\n\n"
12
+ "Search ALL Home Assistant tools by ENGLISH keyword. Returns matching "
13
+ "tools with descriptions, parameters, and annotations "
14
+ "(read/write/delete). Categories: entities, states, automations, "
15
+ "scripts, dashboards, helpers, HACS, calendar, zones, labels, groups, "
16
+ "areas, floors, history, statistics, devices, integrations, services, "
17
+ "backups, todo, camera, blueprints, system, and more.\n\n"
18
+ "Tools already in your tool list are callable directly \u2014 no search "
19
+ "needed. If one matches a search, it comes back as a name-only stub "
20
+ "(pinned: true); use the schema you already have.\n\n"
18
21
  "WORKFLOW:\n"
19
22
  "1. ha_search_tools(query='...') \u2014 find tools (this tool)\n"
20
23
  "2. Execute: call the tool DIRECTLY by name (preferred), or use "
@@ -32,6 +35,42 @@ SEARCH_TOOL_DESCRIPTION = (
32
35
  "Most tools are discoverable only through this search."
33
36
  )
34
37
 
38
+ # Appended to the server instructions when tool search is on; ``{pinned}``
39
+ # is the comma-joined DEFAULT_PINNED_TOOLS.
40
+ TOOL_DISCOVERY_INSTRUCTIONS = (
41
+ "\n\n## Tool Discovery\n"
42
+ "Tools already in your tool list are callable directly — "
43
+ "do not search for them. Once you know any tool’s name, "
44
+ "call it directly; never search for the same tool twice.\n\n"
45
+ "Most other tools are NOT listed directly — use "
46
+ "ha_search_tools to find them.\n\n"
47
+ "WORKFLOW:\n"
48
+ '1. Call ha_search_tools(query="...") with ENGLISH keywords '
49
+ "naming the operation (e.g. 'get entity state'). Translate "
50
+ "other languages first; entity, area and device names keep "
51
+ "their original spelling.\n"
52
+ "2. Results include name, description, parameters, and "
53
+ "annotations (readOnlyHint/destructiveHint). A tool already "
54
+ "in your list comes back as a name-only stub (pinned: true) "
55
+ "— use the schema you already have.\n"
56
+ "3. Execute the discovered tool — two options:\n"
57
+ " a) DIRECT CALL (preferred): Call the tool directly by "
58
+ "name. All discovered tools are callable without a proxy.\n"
59
+ " b) VIA PROXY: For permission-gated execution, use the "
60
+ "matching proxy:\n"
61
+ " - ha_call_read_tool — safe, read-only operations\n"
62
+ " - ha_call_write_tool — creates or modifies data\n"
63
+ " - ha_call_delete_tool — removes data permanently\n\n"
64
+ "A few default tools are listed directly "
65
+ "({pinned}) — these are the "
66
+ "starting pins, and users can unpin the non-mandatory "
67
+ "ones via the Tools tab in the settings UI, so the "
68
+ "actual visible set may be a subset of this list. "
69
+ "Everything else must be discovered via search.\n\n"
70
+ "DO NOT assume a capability is unavailable because you "
71
+ "don't see a direct tool for it. ALWAYS search first."
72
+ )
73
+
35
74
  # Extra keywords appended to tool descriptions for BM25 ranking.
36
75
  # Applied unconditionally via SearchKeywordsTransform so they also
37
76
  # improve retrieval for Claude's native deferred-tool search on
@@ -72,8 +111,12 @@ SEARCH_KEYWORDS: dict[str, str] = {
72
111
  "counter timer input_datetime input_select"
73
112
  ),
74
113
  "ha_get_entity": ("get entity state attributes details single specific entity_id"),
114
+ # #2576: BM25 has no stemming, so "lights" never matched "light". No
115
+ # control verbs (on/off/turn) here: they would pull "turn off lights"
116
+ # onto this read tool.
75
117
  "ha_get_state": (
76
- "get current state value single entity check status bulk multiple states"
118
+ "get current state value single entity check status bulk multiple states "
119
+ "which lights"
77
120
  ),
78
121
  "ha_config_set_automation": (
79
122
  "create update modify edit automation triggers conditions actions "
@@ -391,7 +434,7 @@ LITE_DOCSTRINGS: dict[str, str] = {
391
434
  "actually contains, and the encryption key a restore needs, see "
392
435
  "ha_get_skill_guide (`references/backups.md`)."
393
436
  ),
394
- # ha_report_issue: the lite value is about two thirds of the full
437
+ # ha_report_issue: the lite value is about four fifths of the full
395
438
  # docstring. As for ha_manage_backup, no exact pair is quoted.
396
439
  #
397
440
  # Unlike every other entry here, the deferral target is the tool's
@@ -404,10 +447,14 @@ LITE_DOCSTRINGS: dict[str, str] = {
404
447
  # outright so a compliant agent doesn't spend a call finding out.
405
448
  "ha_report_issue": (
406
449
  "Get diagnostic information plus a finished GitHub issue. Covers "
407
- "two kinds of report: a runtime bug (ha-mcp errored or behaved "
408
- "unexpectedly) and agent-behaviour feedback (the AI used the wrong "
409
- "tool or worked inefficiently). Pass the report text in the call; "
410
- "the server builds the issue title, body and a pre-filled link.\n\n"
450
+ "three kinds of report: a runtime bug (ha-mcp errored or behaved "
451
+ "unexpectedly), agent-behaviour feedback (the AI used the wrong "
452
+ "tool or worked inefficiently) and a feature request (ha-mcp "
453
+ "cannot do something yet). Pass the report text in the call; "
454
+ "the server builds the issue title, body and a pre-filled link. "
455
+ "Every GitHub issue about ha-mcp, feature requests included, should "
456
+ "carry this report as its body; a bug report filed without it is "
457
+ "closed after 24 hours.\n\n"
411
458
  "The response carries the full workflow in its `instructions` "
412
459
  "field (duplicate check, the mandatory anonymisation step, and "
413
460
  "how to file the issue), plus "
@@ -482,3 +529,24 @@ SKILL_USE_BEFORE_KEYWORDS: str = (
482
529
  "ha_config_set_script, ha_config_set_helper, ha_config_set_dashboard, "
483
530
  "or ha_set_entity."
484
531
  )
532
+
533
+
534
+ READ_ONLY_INSTRUCTIONS = (
535
+ "## Read Only Mode\n"
536
+ "This server is running in Read Only Mode: write-capable "
537
+ "tools are disabled and every write or destructive "
538
+ "operation is blocked with a READ_ONLY_MODE error. You can "
539
+ "search, read, and analyze freely. To allow changes, the "
540
+ "user must turn off Read Only Mode in the ha-mcp settings "
541
+ "UI (Tools tab) or the app (add-on) configuration."
542
+ )
543
+
544
+ # ha_report_issue is a mandatory tool, so this always points at a tool the
545
+ # client has. The issue tracker's report gate closes bug reports without it.
546
+ ISSUE_FILING_INSTRUCTIONS = (
547
+ "## Filing ha-mcp issues\n"
548
+ "Before filing any GitHub issue about ha-mcp, feature requests "
549
+ "included, run ha_report_issue and put the issue_body it returns "
550
+ "in the issue unchanged. A bug report filed without it is closed "
551
+ "automatically after 24 hours."
552
+ )
@@ -132,7 +132,7 @@
132
132
  "features.enable_tool_search.label": "Enable tool search",
133
133
  "features.enable_tool_search.help": "Replace the full tool catalog with search-based discovery. Reduces idle context by roughly 90%, to about 5K tokens. ⚠️ Do NOT enable this in clients with their own built-in tool search / deferred tools (claude.ai, Claude Desktop, Claude Code) — the two search layers conflict, and the client's built-in tool search is the better choice there; leave this off. Whether tools are deferred depends on your client and model combination: use this when your setup loads the full catalog up front — models without native deferred tools (e.g. Gemini, OpenAI-compatible local models, Claude Haiku), clients that inline all tool schemas regardless of model (e.g. GitHub Copilot CLI), or smaller context windows. Some Codex models and ChatGPT include deferred tools too — check your client/model directly to confirm its features so you don't leave this enabled unnecessarily. Tools are found via ha_search_tools and executed via categorized proxies (read/write/delete). Requires restart to take effect.",
134
134
  "features.tool_search_max_results.label": "Tool search max results",
135
- "features.tool_search_max_results.help": "Maximum number of tools returned by ha_search_tools when tool search is enabled. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
135
+ "features.tool_search_max_results.help": "Maximum number of hidden tools returned per ha_search_tools call when tool search is enabled; a pinned tool that ranks inside that top count is added as a short name-only entry on top of it. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
136
136
  "features.enable_tool_security_policies.label": "Enable Tool Security Policies (advanced)",
137
137
  "features.enable_tool_security_policies.help": "Gate high-stakes tool calls (lock/alarm control, automation writes, etc.) behind user approval. When a guarded tool is called, the agent tells the user to open the Tool Security Policies tab in the web UI and click Approve before the call proceeds. Per-tool rules with optional argument conditions are configured in the Tool Security Policies tab. Off by default. Requires restart to take effect.",
138
138
  "features.read_only_mode.label": "Read Only Mode",
@@ -13,7 +13,7 @@ const FEATURE_META = {
13
13
  },
14
14
  tool_search_max_results: {
15
15
  label: "Tool search max results",
16
- help: "Maximum number of tools returned by ha_search_tools when tool search is enabled. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
16
+ help: "Maximum number of hidden tools returned per ha_search_tools call when tool search is enabled; a pinned tool that ranks inside that top count is added as a short name-only entry on top of it. Lower values (2-3) save context tokens but may miss relevant tools. Range: 2-10. Requires restart.",
17
17
  },
18
18
  enable_tool_security_policies: {
19
19
  label: "Enable Tool Security Policies (advanced)",
@@ -1667,11 +1667,11 @@ survives an agent's own mistakes.
1667
1667
  - List snapshots (to discover a backup_id or confirm one landed): `ha_manage_backup(scope="snapshot", action="list")`
1668
1668
  - Restore full snapshot: `ha_manage_backup(scope="snapshot", action="restore", backup_id="dd7550ed")`
1669
1669
  - Delete an old snapshot (requires `enable_snapshot_delete=true`): `ha_manage_backup(scope="snapshot", action="delete", backup_id="dd7550ed", confirm=True)`
1670
- - On-demand entity snapshot before a manual UI edit: `ha_manage_backup(scope="edits", action="create", domain="helper_input_boolean", entity_id="kitchen_lights_active")`
1671
- - List recent auto-backups for one automation: `ha_manage_backup(scope="edits", action="list", domain="automation", entity_id="kitchen_lights")`
1672
- - View an auto-backup: `ha_manage_backup(scope="edits", action="view", backup_name="automation.kitchen_lights.20260521_153000.yaml")`
1673
- - Diff an auto-backup vs current state: `ha_manage_backup(scope="edits", action="diff", backup_name="automation.kitchen_lights.20260521_153000.yaml")`
1674
- - Restore an auto-backup: `ha_manage_backup(scope="edits", action="restore", backup_name="automation.kitchen_lights.20260521_153000.yaml")`
1670
+ - On-demand entity snapshot before a manual UI edit: `ha_manage_backup(scope="edits", action="create", domain="helper_input_boolean", entity_id="welcome_home_active")`
1671
+ - List recent auto-backups for one automation: `ha_manage_backup(scope="edits", action="list", domain="automation", entity_id="welcome_home")`
1672
+ - View an auto-backup: `ha_manage_backup(scope="edits", action="view", backup_name="automation.welcome_home.20260521_153000.yaml")`
1673
+ - Diff an auto-backup vs current state: `ha_manage_backup(scope="edits", action="diff", backup_name="automation.welcome_home.20260521_153000.yaml")`
1674
+ - Restore an auto-backup: `ha_manage_backup(scope="edits", action="restore", backup_name="automation.welcome_home.20260521_153000.yaml")`
1675
1675
  - Delete one auto-backup: `ha_manage_backup(scope="edits", action="delete", backup_name="...")`
1676
1676
  - Bulk-delete old auto-backups: `ha_manage_backup(scope="edits", action="delete", older_than_days=30)`
1677
1677
  """